I might post a little late, but you can check out here to see how it might be done in Cycles. In my understanding, the OSL shaders that are exposed in this paper are for closures used in Arnold, which are different to the ones used in Blender. I’ve tried them, by using the cycles available closures and they work.
One example : in the code you have “refraction(N, eta)”, in Cycles it would be “refraction(N, ior)”
We use “Ci”, inside the Output node, so the Surface/Volume/Displacement we connect there is passed to Ci. This is probably not really according to the specification but not a real problem either, a OSL shader from another program can be changed in 2 seconds, by changing the variable name.
Closures are not part of the OSL specification and therefore they can be different in every engine.
UI Hints are indeed not supported yet, but this is a UI “bonus”, not something that prevents the usage of the shader.