That's too ridiculously complex. Let's take into account the most common scenarios here:
1) the user doesn't know what _exactly_ an item does, so they look up our definition of it. In this case, they will probably use the search engine for the name of the item
2) the user followed a link from a moveset.
both of these have no necessity for some elaborate "tag" system. ill be honest, the most im willing to do is give each item a single category. here is what I propose, a hybrid of the current ideas:
Category 1: Link Items: Items that have an effect in battle.
Category 2: HMs and TMs
Category 3: Non-Link Items.
Inside category 3 are multiple tables segregating items by their type, such as EV uppers, Potions, Pokeballs, etc... the advantage of this is that the user doesn't have to wait for the whole item list to load when they just want competitive items.
Alternatively, all categories could show on the same page and by default only Link Items are shown, much like NFEs are hidden by default. In preferences you can show them all, and I can add a button on page to "load other items".