GL30.glGenerateMipmap(GL11.GL_TEXTURE_2D);
Runtime generation of mipmaps varies according to the driver, but usually will just use a simple box filter which results in poor quality mipmaps (particularly with high frequency textures like this). Consider generating the mipmaps offline or manually when you load your texture.
For what you've got, you might want to consider fading your mipmaps to a single solid colour when they get small. Also you've got quite a contrived test case here - I assume in your actual game you're not going to have such big expanses of the same high frequency texture viewed from such a large distance.