This looks amazing, awesome job! Is scripting stuff like this as hard as it sounds (on par with splitting the atom), or if you actually know what you're doing would you say it's fairly easy? I've got nothing to base this off, so all I can say is...
I've got a few suggestions/ideas:
a) Captains could be more likely to be affected by enemy agents, eg getting their army hindered or whatever because of their inexperience compared to a general.
b) Link the number of captains that generals can raise to the level of the general? I haven't played Attila campaign for ages but I remember in Rome 2 generals could get up to level 10, so maybe something like level 1 - 1 captain. Level 4 - 2. Level 8 - 3. Level 10 - 4.
c) Make captains weaker than generals (I believe someone else already suggested this).
d) If a general raises a captain, the loyalty of all other captains raised by them is lowered because their position isn't as rare? Idk, just feel loyalty could play in.
Of course you don't want to put too many negatives on so awesome a feature, lest people decide its better to just ignore it.