We were able to get the Target API working without needing to declare a huge amount of unions. Now, you only need to use a union for plugins to add new fields to pre-existing target types.
https://github.com/pantsbuild/pants/pull/9284
So, I’m not too concerned about lots of unions atm