It turns out the answer is so much simpler than you’d think, and should probably be in a document for future reference.
I spent all day working trying to get both a theme component and a plugin to work to do what I wanted, with no luck.
Then for fun I looked at the values of ascii characters and settled on some lower values to put in front of my tags. I figured it might be a little ugly but at least I’d have them in the proper order.
Turns out when you use non alphabet characters, they remain with the term, but are not displayed.
So in my Genus tag group, I used the single quote with a value of 39, and in my Species tag group I used a comma with a value of 44.
This makes all Genus terms sort before all Species terms, and then additional tags are all higher since the alphabet starts with a value of 65.
To create a Genus term I type 'Theraphosa
and it’s displayed as Theraphosa
but it’s displayed before my Species of blondi
created as ,blondi
, and they both come before an additional tag of terrestrial
, even though alphabetically that would be between those two words.
I hope this helps someone else, and I really home someday Discourse will create the plugin I could not.