It uses one big vertex buffer to hold all vertex data then each patch holds indices to draw from the vertex buffer because the vertex buffer is too large the index values are unsigned ints instead of unsigned shorts so I guess that is a performance hit.
Also it acts strange when the map size goes 1025x1025 i was afraid to try higher than that as it already takes some time to compute the terrain normals :)
Also i use the minIndex parameter of DrawIndexedPrimitives call to get to the vertex inside the vertex buffer.It still needs alot of tweaking and bugfixing but i hope it will get better.
The patches are drawn with triangle strips all the way using degenerate triangles to get to the next row.These degenerate triangles show up in wireframe but not in solidview.There is a way to fix the wireframe view by changing direction of the strips after each row but i leave that for last :)
Here are 2 screenshots :