As to the first problem, I agree there should be an easier way, but I don't like to control this with names. How about the following solution, switched on with d3d_automaterial: When you assign a material to a certain texture, it's automatically assigned to all blocks with this texture in the level. This won't cause a loading delay.

As to the second problem, I have to disclaim the rumor that you can get "fps drop" when applying shaders directly. Shaders are little programs on the 3D card that don't care about how they were applied. When you get an fps drop, there's something wrong, maybe with the shader, or with the level.