I've had a look at the RPC server code and it doesn't seem like it would be that hard to get basic asynchronous IO going, which would help solve any timeout issues by itself. Of course you'd still need to put a lock around all of the actual bitcoin calls until that "one rpc thread" assumption is removed, but nonetheless I think it would be an improvement.
Does that sound like it could be a helpful patch? I'd like to get some feedback before doing any more work in this direction.
Definitely! We would love to see a patch that updated the RPC HTTP server to use async I/O.