How can I have tens of thousands of static meshes on an actor that is moving around?

I’d like to try my hand at creating a game where players can build ships with various different blocks. Much like Space Engineers or Empyrion. I’m not as worried right now about the physics and collision of the ship, I intend on using Procedural Mesh Components to generate chunks for physics and collision and that’s also what I’m doing for visual rendering, but I want to know if there’s a better method for the visual aspect. If it’s possible, I’d like to split the load on my computer and handle physics on the CPU and render it visually with more complex meshes and LODs on the GPU (which is obvious but there’s some more context below).

I have tried using HISMCs and ISMCs and they work great unless the ship is moving (which is obviously important). I suspect that the loss in performance has to do with the transforms of every instance needing to be updated with the ship actor. I know the bottleneck isn’t my GPU because reducing lighting quality and mesh complexity have little to no impact on my performance. Likewise, if I cull the meshes using HIMSCs, my performance will still drop just the same when the ship moves even when every block is currently culled.

My current approach is to generate chunks using Procedural Mesh Components but generating procedural LODs for something this complex is pretty performance heavy, and I’d like to leverage the GPU if possible. The ship actor will already have a 3D array of its blocks which will contain the mesh and transform data. Can I somehow pass this array into the GPU and have it render the ship. The transforms will be consistent and pretty predictable given the grid-like nature of the ship. And can I still leverage nanite in this process? I’m relatively new to UE5 and I know what I’m asking probably doesn’t have a simple solution, but I don’t mind the hard work, I’m mainly looking for a good starting place since all of my internet searches on the subject have turned up pretty dry.

TLDR, transforming an actor with many instances in ISMCs is very expensive and chunking is also not great because I can’t have LODs for individual blocks. Is there a way to render the grid in the GPU instead so each block can still have detailed meshes and LODs?