We've developed a workaround that involves changing the scale of the cache to 1.0001, which seems to resolve the issue, and should only change the simulation frame after 10000 frames, presumably. It appears this is a rounding error? Or some kind of imprecision in the data, which is strange because the problem frames don't seem to come up evenly and are dependent on the scene/simulation.