Reading your problem from gamedev.net, it sounds like compressing normals isn’t really the best solution to your problem. If you have that much terrain data, but only a small amount of it is visible, you have a prime candidate for culling and LOD. That way you only really have to swap in the high-detail geometry for the small area around the player and the distance rendering uses a simpler mesh. If you combine this with normal mapping, it will be very likely nobody can notice it.
If you’re set on compressing the coordinates, you might look into using the integer vertex attribute types, but that might require masks and shifts and I can’t recall how well that’s supported (or if it’s even available in the newer shader models). I’m pretty sure that the floating point attributes are a fixed size, unlike with texture formats.
If you use object space normals in a normal map, then you don’t need vertex normals, and then you can compress those into a 2 component texture and reconstruct the z value.