Fix bugs in blocking logic.

Any transaction that is blocked should not send any additional commands.
This would be completely illogical because a blocked transaction is
waiting for the TM to respond.

We now run the blocked transactions before processing new commands since
the previous commands may free up a blocked command.