You can create a macro to chosese between smimming and flying mounts:
/use [flyable] FlyMount /use [swimming] SwimMount /dismount [mounted]
But some mounts are allowed only in specific area. For example, Vashj'ir. If I'm out of Vashj'ir, then even if I'm swimming I want to mount a FlyMount, since it has some use (I can fly out of water). Is there a way to do it?