I've collected a number of random bayonet shades from sale/giveaway tables in hopes of ending up with one that would fit one lens or another. What I ended up with is a random collection of bayonet shades that don't fit any lens I have.
So, my solution has been to buy the genuine article, either used from one of the usual suspects, or new if I can't find a used one and want it badly enough.
For a lot of lenses a screw mount would be a good solution, though for the lenses that came with "petal" shades, especially zooms, the OEM is probably best. There are a lot of clone hoods
around on ebay which I've never tried, but are likely fine.