Ok so I updated to 3.5.8 which (unfortunately) did not fix the problem.
The behaviour is the same as explained in the top post.
However I managed to fix the problem with a kind of workaround:
I randomly observed that the shader changed correctly
when switching ON an additional overlay UITexture in front of the texture. (I could see the shader change because the overlay was transparent)
So what I did now was enabling and disabling this overlay texture within one frame (so that the player won't notice), and voilá - it works!
I changed
case GRAYSCALE_INDEX:
if(_coverTexture.enabled)
_coverTexture.enabled = false;
if(DrawTexture.shader != ShaderGrayscale)
DrawTexture.shader = ShaderGrayscale;
break;
to
case GRAYSCALE_INDEX:
_coverTexture.enabled = true;
_coverTexture.enabled = false;
if(DrawTexture.shader != ShaderGrayscale)
DrawTexture.shader = ShaderGrayscale;
break;
(Notice how the texture gets enabled and disabled in 2 lines ... but it works somehow)
I am not into graphical stuff, so maybe you guys have any idea why it behaves like this?