How do I sample a texture at (u, v) on the CPU?

As for EyeDropper, it does reads the final color.
I believe your question is answered here - Get Texture color value at ray collision point
For the sake of simplicity I would recommend to test your example with usual textures first, without any shader code etc.