Why not just create a custom property called “Tags”, then add a set of pre-determined values as accepted properties for this?
Depending on how many values are needed, you could allow a free-text field, but this runs the risks of typos or duplicate/similar entries.
I have done this, and it works much better than pre-determined tags. I also added a value “Other”, which triggers a workflow for me to ask the colleague why they’ve assigned “Other” - i.e. is there a value missing, or do they need extra training?
You can then filter within the company/contact overview based on tag type.