The water is graphically treated as the 'floor' of the game world, with nothing beneath. If you move the camera around a boat or plane sitting in shallow water having the seabed visible as a shallows texture, you'll see that there is no depth at all. The shallows texture is drawn at the surface. And sothere is no ready means of placing a shadow at some depth below.
I see that in the BigShipGeneric class (and probably ShipGeneric, too) there is code to determine the depths at a number of spots around a vessel, based on the RGB value of adjacent pixels centered on the vessel's position on map_c.tga (which creates the shorelines and shallows). Perhaps some Java guru (not a Neanderthal like me) might be able to use this to displace the shadow as a means to suggest depth. This would involve establishing an initial offset based on the Sun angular elevation, and then dynamically shifting the shadow based on the camera view angle. But such an approach should then dispense with the usual shadow, or keep it AND add the deeper shadow up to some maximum water depth.
As to creating the seabed shadow, refraction in the water will have it displaced at an angle no larger than roughly 45 degrees from vertical (even when the Sun is on the horizon.) This makes for an easier treatment. But is it all worth the trouble?