Update on Implementation:
I’m still using the constructor with child actors. The time it takes doesn’t seem to scale linearly and I capped it at 400 per actor (started at 2000 and ended up killing the editor process). I think this is because it is difficult to control when the constructor fires so you may end up creating and destroying thousands or tens of thousands of actors for each 100 you are creating.
I only need one or two per level though as I will stream them so I imported the data in one giant chunk with an indexing column I use in each actor that says if == yourNumber then make this child actor. Then I drag each spawning actor into its relevant level. It all works well for the moment but feels a bit hacky. Since implementing the C++ plugin method should yield identical results I can go ahead with other design stuff until I figure the C++ method.
Thanks everyone for your help!