Running BPs in the background for runtime world generation?

I’m having a little trouble with my world generation. I’m trying to do an open-world FPS type thing.
This video shows the problem I’m having:

Here’s how it works so far:

1 - WorldGen BP runs, assigns tiles to an array stored in GameInstance on lobby level (proxy map is spawned to show layout and eventually allow player to choose spawn point)
2 - Player enters game world level
3 - ChunkSpawner spawns Chunk BPs in the same layout as the proxy map from the GameInstance array
4 - Individual Chunks spawn as the player hits their trigger volumes (these are large enough so that they spawn out of view)
4a - if Chunk has never been triggered, it is generated and Loaded (big hiccup here)
4b - if Chunk has previously been triggered, it is simply Loaded and made Visible (almost no lag here)
5 - When the player leaves a trigger volume, that Chunk is Unloaded and Visibility is set to False

One thing I’ve tried is generating all of the Chunks at BeginPlay. This leads to a long level load time (which is okay) and great performance in game, BUT if the map is larger than 10x10 crashes from running out of memory. It will also fail to package for Windows.

My Blueprints are below. As I mention in the video, I have no idea how to make this work correctly. I’ve tried Level Streaming in the past, and it didn’t work very well, I still got huge hiccups in game. I’ve tried AsyncLoadAsset nodes, but I’m probably not using them correctly. Any help is greatly appreciated!