Before spashing out on meshing software, make sure this isn't just a z-tearing problem.
Depth resolution is performed by z-buffering, where the depth of each pixel is compared to the current buffer entry before drawing. The problem is that z-buffers have a limited resolution (16, 24 or 32 bits integer), leading to a discrete distribution of depth levels. As a result, two very close parallel surfaces may end up in the same "z-bin", making it impossible for the renderer to establish the correct coverage. This typically results in artefacts similar to the ones in your picture.
The severity of the problem is affected by different parameters: the z-buffer bit depth, the total dynamic range of the viewed volume, the distance of the objects, and how close the surfaces are to each other.
Try both 16 and 32-bit video modes. If the problem is more severe in 16-bit mode, then it is probably a z-tearing problem. Another indicator is if the problem disappears if you move the camera closer (although orbiter's dynamic range adjustment may to some extent compensate this effect).
If you are confident that the mesh is ok otherwise (e.g. doesn't contain superfluous surfaces, such as surfaces pointing into the interior of closed, invisible volumes) then the only way to fix this problem is by avoiding close parallel surfaces. This could mean cutting window holes into the hull instead of just placing a window pane on top of the hull surface.
Some renderers also have a provision for "z-biasing" which allow to prioritise surfaces relative to each other, but this is a bit of a hack and can lead to other artefacts. Z-biasing isn't currently exposed to the mesh format.