Reproduces a dumb situation with Unity surface shaders where you try to use _MainTex_ST
and find it is undefined.
Then when you try to define it, you get told that it's a duplicate definition.
This appears to be "intended behaviour".
The attempted workaround, however, doesn't work for me. It compiles fine, but I just get black for the UVs.
The actual, viable workaround is to name the variables so they don't start with uv_
(so that Unity doesn't stomp them for you), and then populate them from a custom vertex shader.