Stop using Perlin noise and use Simplex noise, or something even better, instead. We've come up with much, much better random noise generators in the last forty years, there's really no excuse to still use Perlin, especially in a setting where grid-aligned artifacts are going to end up in your geometry. It's a "learning about noise" algorithm, not a "using it for reals" algorithm.
Ultimately the goal is to make something good looking, how does a different noise algorithm matter? IOW why simplex generates better height maps than perlin?