自分も同じような段階なので非常に興味があります
僕の場合は通信にはプロトコルを定めて4バイト以下でやり取りしているので、オブジェクトの送受信は今ちょっと調べただけですが……

ハッキリとは分かりませんが、ObjectOutputStream自体がブロッキングするioなんじゃないでしょうか?

調べてみたところ以下の実装が綺麗な気がします
http://stackoverflow.com/questions/5862971/java-readobject-with-nio
ByteArrayOutputStreamでラップしてデータの長さを調べて、さらにByteBufferでラップして先頭に長さを埋め込んでおきます

受け取る側ではまず先頭の長さ情報(4バイト)を読み込みます
続いて長さ分確保したbufferに本体を読み込み、あとは逆順にObjectInputStreamに落とし込みます

僕も簡単なフレームワークがあったらなあとも思いますが、お互い頑張りましょう