I tried a similar sort of architecture at one point, the issue is that if you share blocking calls in a thread, at some point something will block that you don't expect to.
It's also just far far simpler to go with a single networking thread. Then pass off any cpu intensive, or long running tasks, or blocking tasks, to other threads.
http://mailinator.blogspot.com/2008/08/benchmarking-talkinat...
Paul Tyma claims handling 40000 chat messages per second on a quad core desktop system with it.