Efter några försök har jag fått reda på att det var ett problem med Azures belastningsbalanserare.
Efter 60-tals inaktivitet kommer den att koppla från eventuell väntande TCP-anslutning.
Efter ytterligare grävande har jag hittat detta inlägg av MongoDB diagnostik FAQ, och jag har ställt in tcp keepalive till 120s:
sudo sysctl -w net.ipv4.tcp_keepalive_time=<value>
och jag har även ställt in socketKeepAlive på MongoClient till sant:
MongoClientOptions.Builder options = MongoClientOptions.builder();
options.socketKeepAlive(true);
mongoClient = new MongoClient(mongoAddress, options.build());
Efter dessa korrigeringar verkar problemet vara borta!