> I'd prefer for each item to have an unstructured set of tags ("fresco", "depiction of a castle", "depiction of Italy"), with automatic derivation of parent tags ("fresco" implies "painting") and the option to search by multiple tags.

It's definitely possible to do this. IMSLP (a large repository of freely available sheet music, which differs by cross-cutting features such as genre, historical period, contributors (composers and others), instrumentation etc.) is MediaWiki based and has a plugin that does exactly that. These days the would probably want to host all the tags on Wikidata so that they can be multilingual and queryable out of the box, though.

Which is actually done on commons, it just isn't very popular (on images, click the structured data tab and then look at depicts) [admittedly i think a big part of the problem is is implementation choices and UI decisions].

That's only "depicts" claims and is nowhere near comprehensive. It doesn't even come close to matching what's currently stated using categories. Running searches on that data is also hard compared to what IMSLP gives you for their own system.