OK, Figured it out!
There was a GL account in the batch that can only be posted to through the subledger and it therefore kicked out the whole batch.
This is smart. Rather than partially posting it and just putting up an error batch for the blocked GL it kills the whole batch. But it was a bit hard to find because it was buried in the batch with no real clues!