Finalmente descobrimos como contornar esse problema, mas ainda não entendo o que está acontecendo. No nosso caso, temos um servidor que gera ~10 hubs sinalizadores que obtêm seus dados do MongoDB. Parece que, quando o aplicativo estava inicializando, ele fazia várias chamadas rápidas ao MongoDB para obter o conjunto inicial de dados e, embora ocasionalmente funcionasse, na maioria das vezes não funcionava. Acabamos resolvendo isso adicionando um segundo de atraso entre o carregamento de cada hub SignalR para que a consulta inicial fosse um pouco atrasada e não tivéssemos contenção.
O estranho disso é que nenhuma dessas coleções possui uma grande quantidade de dados e a carga inicial geralmente é <100 documentos por coleção (máximo). Uma vez que as coisas são inicializadas, não parece importar com que frequência acessamos o MongoDB. Parece apenas estar na carga inicial.