Tente definir a opção maxConnectionIdleTime em seu MongoClientOptions (especialmente se você estiver usando um ambiente MongoDB hospedado)
Exemplo:
new MongoClientOptions.Builder()
.requiredReplicaSetName(REPLICASET_NAME)
.maxConnectionIdleTime (MAX_IDLE_TIME)
.connectionsPerHost(CONNECTION_PER_HOST)
.cursorFinalizerEnabled(false)
.build();
connectTimeout é enganoso, pois é a configuração de tempo limite para a conexão inicial.
Para o problema em torno da reinicialização do MongoClient, certifique-se de que o código do cliente esteja no escopo correto para que o código de inserção seja selecionado. Além disso, eu só vejo o db e não o objeto de nível de coleção (com proxy?) sendo reinicializado.