In the case of a test with a secondary with high slave delay, there is a situation where the secondary can exit initial sync and then an insert happens into the system.keys collection (causing the primary's lastApplied to advance). This means that when awaitNodesAgreeOnAppliedOpTime is called, the secondary will remain delayed until the test times out.
In the case of a multiversion test, we skip shortening the heartbeat period. If the noop writer is turned on and set to an interval of 1 second, then that can cause awaitNodesAgreeOnAppliedOpTime to timeout because just as a node advances to meet the other node's expectation, the expectation advances. The reason for this is that the nodes will advance their understanding of the other nodes' lastApplied through heartbeats and because the interval stays at 2 seconds, nodes cannot update their view of other nodes fast enough before the next noop write happens.