You could do the energy preservation but you’ll have to duplicate the Fresnel work done inside the closure as Vlado warned earlier.
You do the Fresnel term math (hopefully matching that of the microfacet_ggx) and figure out the reflection weight.
Then apply it only to the diffuse/refractive closure below:
diffuseColor *= (1.0 - specularColor * fresnelReflectionWeight);
Best regards,
Ivan M.