I’m not a fan of how you developed the idea in all your examples, but I like the idea itself. A LOT.
Troop Types are seemingly randomly distributed on a number of troops, and it feels counter-intuitive, not to mention it breaks any semblance of Lore, balance aside. The Bone Dragon is obviously an Undead and a Dragon. That he only counts as one of these two categories when he clearly belongs to both is a problem. Same thing for Alastair and the Grave Knight who are visibly Knights, not just Undead.
However, I’m not sold on the idea of giving every single troop two types instead of just one as you suggest. This would be forced and won’t make sense in even more cases than the ones we can name now. Instead, I think it would be a great idea to simply give certain troops a secondary Troop Type.
This would be much more subtle tweaking and would open the horizon for many more line-ups without forcing stuff that doesn’t make sense. The idea would be to make things more intuitive and varied, not the opposite. Even if most troops ended up with two types, as long as it’s consistently logical, it would be perfectly okay.
The only thing that would need to be watched would be the potential to add up two Troop Type bonuses, which could prove overpowered, but if the possible combo are varied enough, it could simply add more depth and choice and give a lot of forgotten troops the love they need.
For instance:
1/ Everybody who is obviously a Human would actually be a Human, whether they’re also Undead or also a Knight or whatever.
2/ And so on! ^^
But a plain Goblin would still only be a Marauder, and a Pegasus would still only be a Beast, etc.
Edit: I replaced Avina with the Banshee as @Archenassa has correctly pointed out that Avina is still alive. =) Point stands, though, I hope!