It's completely procedural, no textures needed. Improving it further is just a matter of having some "artistic sense" (which I don't have much) to choose nice colors and noise distributions.
It's unfortunately not that simple. Please don't take the following comparison in the wrong way, the point is not to down-play your effords but to illustrate why I think we should really render this on top of a base layer.
From mid-distance, individual blades invisible:
Your solution (full grass):
My solution (overlay with LOD):
After having had a procedural color variation on a hires texture on the airport keep for a while, we decided to discard the strategy some two years ago for the reason seen here - not enough variation. A texture can bring in much more structures which are hard to capture by Perlin noise, for instance tracks of vehicles or erosion.
From large distance with seasonal variations:
Full grass:
Overlay with LOD:
Unfortunately ALS has a lot of post-processing options runtime on the textures - you need to achieve a seamless match with all of them. Late autumn and winter in the overlay is easy - we discard the whole overlay and show only the base texture. In your scheme, that's considerably harder.
From close distance, individual blades visible:
Full grass:
Overlay with LOD:
Unfortunately airport keep terrain may be sloped - and the shell texturing seems to not handle this gracefully - you can look through slopes in the scheme. The overlay handles the same problem much more gracefully.
So unless you come up with a really good case for full grass, I think I'm going to stay with the overlay / LOD scheme which draws blades out to 1 km max. - which is also going to have an edge in arid areas where you want to create patches of grass and bare soil inbetween.