When using VirtualHeightfieldMesh we see intermittent crashes in FDepthPassMeshProcessor::TryAddMeshBatch().
This can happen when FVirtualTextureProducerCollection::CallPendingCallbacks() is called after the VertexFactory has been cached in a MeshBatch, and before the MeshBatches are used to generate draw commands.
FVirtualHeightfieldMeshSceneProxy::CreateRenderThreadResources() needs to be rewritten so that the VertexFactory isn't cached.
FVirtualHeightfieldMeshSceneProxy::CreateRenderThreadResources() also needs to be fixed so that we don't access the unsafe URuntimeVirtualTexture object directly on the render thread. This access has a race condition where the wrong producer and allocated virtual texture can be returned.