I just did this in one macro:

/cast Flying mount name
/cast ground mount name

I didn't find it that bad. And only uses one key. I just jump to reset it. I mash it again to get a ground mount in a flyng zone.

Ill try the above code. Seems handy.