Here is a quick mod using the script Krapougnak posted. I do not know if you have a format issue Ithilis, so compare what I have to what you have. The mod works for both the Aurora and Blaze. You can replicate it to all the other hover units accordingly.
A note on testing this mod using the cheat unit spawn menu; make sure you spawn your hover units on land. If you spawn your hover units on water they will move the same speed as if on land. Why? Because there was not a layer change. The function is only called when there is a layer change (land moving onto water). So if you have a mod that allows the Tempest to build all hover units *cough*like I made*cough* then the hover units will move at land speed when they are built in water. Transporting hover units from land onto water works fine.
Also this is a bug with the Megalith as well. If you build a Megalith in water it will not get its water speed bonus until it moves onto land and back into water. Try racing a Megalith built (or spawn) on land and one built (or spawned) under water. Move the land built Megalith under water and race the two and you will see that it wins. To fix that we just need to add some lines from OnLayerChange to OnStopBeingBuilt in the Megaliths script.
Also, in the mod I had posted you will see a file mod_units.lua. In your second bit of code you had added the WaterSpeedMultiplier to the blueprint file. Now in Krapougnak’s posted code you will see that is not needed because it is set directly in the function. You can use a blueprint merge as I have created so that you only add what you need to the blueprint file. It plays nice with other mods and cuts down on the number of files (and possible mistakes). You will need to edit Krapougnak’s posted code to get that data from the blueprint. The Megalith’s script has a good example to follow.