Sadly no mention of SCTP, which, if you don't need to communicate with arbitrary hosts over the Internet, sits in a nice middleground between TCP and UDP.
Of course, you could use a userspace stack but you still have another problem: all the middleboxes between you can your destination. Anything that tries to be smart about your packets (NAT, proxies, younameit) may break your connectivity simply because it only understands TCP and UDP. I guess you could use UDP encapsulation but personally I'd start questioning whether picking SCTP as a transport protocol is worth all this trouble.