2.6.1e. I haven't gotten around to upgrading to 2.6.3 yet.
Regarding clearing the texture from the prefab, I threw together a test scene and it looks like that may be the solution. I tested this before but it didn't work because the other issues were interfering. Here's what happens:
Case 1: Adding a new UITexture component to the prefab will have no material, texture, or shader. If copies are instantiated at this point, everything behaves correctly.
Case 2: Assigning a texture to the UITexture prefab will auto generate a material and choose a shader. If copies are instantiated at this point, changing the texture on any instance changes every instance, like one would expect.
The unintuitive part:
Case 3: Removing the texture (and/or shader) from the UITexture prefab does not remove the autogenerated material. If copies are instantiated at this point, one would expect things to act like Case 1 above, but instead changing the texture on any instance changes every instance.
The only way to distinguish when Case 3 will occur is when the Material is hidden on the UITexture prefab. There is no way to get back to Case 1 without removing the UITexture component and readding it.
I can't test this in the original scenario at the moment, so I don't know why it would work for a while and then suddenly stop, but I suspect it has something to do with the prefab being updated with changes to instances.