FYI, there's a way to manipulate which horse a troop uses for its upgrade.
Go into your inventory screen and move all of the horses you have over into the "discard" column on the left. Now add the whole stack of horses you want them to draw from first back into your inventory on the right. Move each of the remaining stacks back over in the order you want them to be used. That's it. Now they will use them in the order you chose. You don't need to worry about pack horses because they aren't used for upgrades.
So for example, if you have 10 Battanian Ponies, 10 Midlands Palfreys, and 10 Steppe Horses, and you want them to use the Palfreys first, then Steppes, then Ponies, move all three stacks to the discard column and then add the Palfreys back first, then Steppes, then Ponies. Done.
Here's the reason this works. The game code creates a list or "roster" that tracks all of the items you possess in your inventory. Any time you acquire a new item that you don't already own, it adds it to the bottom of this roster. This means that the items that you have had in your inventory the longest will be at the top of this roster, and the most recently added items will be at the bottom. When the game selects a horse for an upgrade, it simply starts at the top and moves down your roster of items one by one until it finds the first horse stack (or warhorse if that's what's needed), and removes a horse from that stack from your inventory. Well, when you move items into the discard column in your inventory screen, it temporarily takes them out of this roster, and when you add them back it will insert them at the bottom of the roster, so you're able to arrange them in any order you want.
*It's important to note that the order they appear in your inventory screen is NOT the same order they are on the item roster, so don't let that mislead you into thinking they will be used in the order normally shown. There's no way to know what order they actually appear on the roster unless you memorize it.