Every time I made the slightest change to any shader, created a new empty shader, or duplicated an existing shader, I had to wait. Also, the problem slowly worsened over time. I eventually found that the solution was to delete the shader cache (Library > ShaderCache) which had grown stupidly large. But by that time it had probably already cost me several hours of waiting combined. Perhaps it would be a good idea to be able to set a maximum size or a time limit for shader cache files in Unity's preferences to prevent this behavior. It kind of defeats the purpose of having a cache if it starts slowing things down instead of speeding things up.