Custom Fresnel with separate wavelength input
I can think of two approaches, either adjust blender's code and build your own version. You may even be able to get your changes accepted into the official blender sources.

Or write an osl script that calculates the way you want. As a starting point the official fresnel node is implemented as -

shader node_fresnel(
    float IOR = 1.45,
    normal Normal = N,
    output float Fac = 0.0)
{
    float f = max(IOR, 1e-5);
    float eta = backfacing() ? 1.0 / f : f;
    float cosi = dot(I, Normal);
    Fac = fresnel_dielectric_cos(cosi, eta);
}


And you can find fresnel_dielectric_cos() here