It's a bit tricky, but it now works that way:
1. I'm generating a 33 x 33 normal map.
2. I'm upsampling that normal map into the 512 x 512 texture; normals are filtered and renormalized at that step.
3. Instead of adding a scalar noise to the heightfield, i'm now adding a 3D vector noise to the normals. I'm using 6 octaves. Each having different weights. Then i'm renormalizing the final vector.
I'm also storing the heightfield in the alpha component, which means the same process is done for free for the heightfield (except the renormalization of course, since it doesn't make sense for heights).
The quality is IMO a bit better, and much faster:
Next step is to use both normal and heights to generate the diffuse color.