We encountered the same or a similar issue. At first we thought it was connected to the physics substepping but reading here it would seem that enabling substepping only heightens the chance of a freeze.
You can find an example project (only the default scene and multiple instances of one content examples particle system) in our bugreport:
https://answers.unrealengine.com/questions/716390/shipping-game-random-freeze-stops-responding-with.html
The packaged version freezes regularly in 4.18 / 4.17. With enabled substepping this happens anywhere from a few seconds to a few hours (most often during the first 30 minutes).
We could also observe that using messaging with connected session frontend would prevent a freeze and one can even wake up a frozen session (e.g. by connecting the frontend tool).
All in all it seems only to freeze if there isn’t much else to do than rendering / updating the render scene.
In most instances it looked like the gamethread is waiting on a task trying to execute TStaticMeshVertexData::GetResourceArray(), but there were other instances with different tasks (not in the example project).
As a workaround we’ve set TG_DuringPhysics to block till complete (in LevelTick.cpp: RunTickGroup(TG_DuringPhysics, true) which reduced the chance of a freeze drastically.