Excellent idea. I had gotten as far as making a separate UDT for proof of concept, but the thought had not occurred to me to make that a nested structure inside the primary. The only issue there is that I have a string structure inside it, so I'll bump into the double nested structure limitation, but I can work around that by having Primary.String and Primary.Parameters, and just MEMCOPY twice to get both units filled. Much better than individually populating everything across the board.
Am I correct that to MEMCOPY a block to a string, the first DWord (Len, MaxLen?) needs to be 0x00080008? As far as I can test it populates each time when that's the case, and not when not the case.