I had used that approach to render mesh surface consisiting of more than 200,000 triangles, and I haven't faced the overplap issue. However for some cases, i have to reverse the original normals prior to creating their copy, may be thats the issue your
facing. Also, i had set NearPlaneDistance to 0.5 and FarPlaneDistance to 10000.
var copynorm = new Vector3[mb.Normals.Count];
for (int i = 0; i < copynorm.Length; i++)
mb.Normals[i] *= -1;
copynorm[i] = -1 * mb.Normals[i];
Hope that will help you with your issue.
P.S. Reversing the original normal was required when your building triangles using Right Hand Rule (WPF approach) instead of using Left Hand Rule (DirectX/SharpDX approach)