Judging from the debug.log output, it appears that bitcoind stops responding to messages from other nodes while it is busy running ProcessBlock(). As ProcessBlock can sometimes take 2 minutes, this seems like perhaps something that can benefit from it's own thread. Is anyone working on doing this? If not, I'm happy to give it a shot. Opening this issue (even though it's always been like this) to link to the pull request that'll fix this.
Closing this, as it never spawned discussion and a lot has changed since a year ago.