The difference between the mounts are the movement types, stats and standard abilities.
It should work for all three heroes. Store the mount for every hero and remove it when changing the ability. Make sure there is only one mount when casting the ability.
function MountReplace takes unit hero, unit mount returns nothing
function MountGet takes unit hero returns unit
function MountRemove takes unit hero returns nothing
function MountClear takes unit hero returns nothing
function MountGetAll takes player whichPlayer return group
function MountRemoveAll takes player whichPlayer returns nothing
function MountClearAll takes player whichPlayer returns nothing
List of new mounts:
Use the shop paged system to add multiple mounts to one mount building.