The reality here, and I think you should just come out and say it, is that the rationale behind spiped is that you don't trust SSL/TLS period.
What's the deal with the per-message padding scheme here? Is this a tradeoff against rekeying?
That's part of it, sure. But SSL/TLS also doesn't provide client authentication (unless you use client SSL keys, which is absolutely guaranteed to have security holes given that nobody ever uses them).
What's the deal with the per-message padding scheme here?
1. Makes the code much simpler and less error-prone (no need to read variable-length records from the network).
2. Cuts down on information leakage. I'm planning on using this for kivaloo, which uses variable-length records -- I don't want to expose the lengths of account names or suchlike.
Considering that a pointer mistake in code that you didn't think was security critical might allow execution of arbitrary code, aren't all code paths that might execute, security critical?