Vulkan pipelines should be destroyed only after the last command buffer using the pipeline is done executing. Since we do not track which pipelines are encoded into which command buffers, defer destruction until the current command buffer finishes.
It feels unfortunate to do this from the shader backend, and introducing something like wined3d_shader_vk etc. seems more in line with what we do with other objects. I'm not sure that the complication is worth it in this case.