This is true you are going to need a TE to store the data, but since it will be storing an unlimited amount of casts as a RegistryEntry you will need this.
Do you override write/read to nbt in your TE? If so make sure you call super or the TE will have problems loading. If this is not the case, try stepping through it in your IDEs debugger and find out what is happening.
Well... I got a new result. Pressing F5 causes a new crash (I'm following Mekanism's example).
Edit: Never mind, I loaded a new world, and it works. Mekanism, you are my lord and savior! (and thank you, Cadiboo)
Use Minecraft's Structure Blocks to save a structure to NBT, which you can then use in code to load the structure.
Create a new Template instance with the resource location of your structure.nbt file, and call Template#addBlocksToWorld to spawn the structure. You can do this in your WorldGenerator class.