It turns out TLS isn't that bad.
OpenSSL exposes a "memory BIO", which is basically exactly this. You send in writes, and then emit data when you can, and in the meantime it buffers.
It's a bit more limited than that, but generally speaking it's not too bad.