I wouldn't do the stats like that at all
I would say that HP, attack, defense, etc are a unit's actual stats, while canFly, canTunnel, etc aren't.
If you go down that road you'll end up with canMeleeAttack, canUsePoison, canEqiupMeleeItems, canTalkToCharlieTelepathically and down that road lies madness.
Here's an example of how I'd fix some of these:
I would give each unit landSpeed, flySpeed, swimSpeed, digSpeed. If digSpeed is 0, it can't dig. If flySpeed's 0 it can't fly. Possibly the same is true for leadership - it makes little sense for a unit with leadership 0 to be able to lead a stack. Same goes for melee, ranged, etc attacks (i.e. if your ranged attack is 0 you can't shoot). Hell, the same goes for being a caster - having no juice means you can't cast spells, so why have superfluous archetype or boolean values as further qualifiers?
The real benefit of the above scheme is that it makes buffs from spells and equipment much easier to handle. If a tanking soldier gets an artifact or equipment of some sort which is a bow, you can just change the soldier's attack from 0 to whatever attack the bow will grant him. Roughly speaking no further changes are needed. Same goes for many of the other abilities - if a caster gives a unit fly or dig speed which it previously didn't have, just change that value.
As for creature types (including things like Undead, which in DnD is a template) I really like how it's handled in the Magic TCG.
If you have a single "race" descriptor (like you posted above), then you can have "Elf archer", "Human archer", "Undead archer". So any archer that is uncroaked becomes "Undead archer" - effectively losing information about what the unit type was (in this example elf vs human) before it croaked. This info is probably important, as the units were different when they were alive and will probably remain different after they were uncroaked.
There are just too many possibilities for a basic race/archetype scheme to work - siege weapons, heavies, barbarians, warlords, elite versions of units all fall out of that categorization. What I suggest is a much looser arrangement where you can define all the qualifiers and string them together (with a little bit of restrictions).
To sum it up, I suggest a list with all the abilities/archetypes/modifiers that affect a creature, and then another list saying which creature has which. Some may need two fields (i.e. if your currentJuice is 0 then you can't cast NOW, but if maxJuice is 10 you're still a caster and it needs to be kept track of, so you know how much juice that unit will have next turn)
As an additional note, units totally need size categories of some sort. With the above stats (i.e. just a "can mount" and a "can be mounted") you can't account for huge units trying to climb up on much smaller mounts
Edit: also missing price and upkeep, but that's probably not as important right now.