Wow indeed! Terrific result Jon. And great that you can keep the masking. And thanks for the get normal idea, have to try that, though I'd prefer not to have to render something and reproject; it should all work in one go, preferably.
I think if you can keep the water shader out of the foam part, it will reduce render time considerably.
@Bobby; the compute normal was actually only used to do some lateral displacement to the rocky hills, so right after the first upward displacement and a displacement to scalar function + displacement shader. Then a surface shader with min slope and min height and some additional displacements, masked strata and an offset in the surface shader there. Then the seabed lowering, twice, through 2 sets of smooth steps (in which you can set the heights form the initial terrain displacement (after the displacement to scalar) to use for the areas where the seabed needs to lower, both leading to the water line to get the masks for the coastal and deeper waves (with a sinus multiplied to get the 'surf').