I got really tired of texture transitions in grid based games so I tried out something completely different.
I render the original hexgrid with multiple render passes, each time I'm using different shader.
1. Render hexgrid to rendertexture, each color represents it's own terrain.
2. Render with shader that combines noisemap with current rendertarget to create irregularity. Each fragment I'm trying to find nearest "coastline" from area of N pixels. This way I can control that noise isn't rendered too far from coastline. Fragments with alpha 0 are water.
3. I blur the rendertarget so I can make smooth transitions between different textures.
4. I apply the textures, each texture has it's own basecolor. To determine transitions between 2 textures I compare fragment's color to each basecolor and select two whose color is closest to the fragment's color. I mix these 2 together and finally, since alpha channel represents water I know that fragments with alpha > 0 and < 1 are coastlines.
Most of the techniques can be found online it's just the matter of combining shaders this way.
Here's a pic of the process: