Allow multiple consumers, protect from cleanup via rwlock.

With multiple distributor threads, we were seeing high CPU usage
when the storage queue was empty because thread 0 would block waiting for
a worker and then other threads would fail to acquire the lock and just
spin until another thread got a chance to block on the Receive.

Signed-off-by: John Simons <john.simons@nservicebus.com>
Merge branch 'hotfix-4.4.5'