Document management by metadata is the correct approach. I’ve worked both with Document Sets and without them. Document Sets have the benefit of storing documents that share one or more properties. They come in handy if you use a document library for storing multiple documents in an isolated environment. An example can be the use of marketing surveys records where you have several different documents in one survey. That market survey would work perfectly fine as a Document Set. You could easily store several market surveys in these document sets.
The downside is that Document Sets need a lot of configuration and it can sometimes be a cruel task to create views on the library showing only documents. Further they are folders with properties, and I’m a Filter-By-Metadata-SPAdmin and don’t like the information architecture of folders. Basically since you can only view one at a time, and can’t compare documents in multiple document sets at a time.
So instead I prefer to use a central metadata store, such as the one called Managed metadata Service and its Term Store. In there you create the taxonomy to be used in the company and can reuse terms for navigation, if needed. In your case, create the categories you need in a Term Set which should be used in a Site Column. That site column is of type metadata, which you connect to your category term set upon creation. Create as many term sets and site columns you need.
The next step is to collect all your newly created site columns in a content type for your document library. Add the site columns you need and move over to your document library. Go to library settings and chose advanced settings and set the “Allow management of content types” to yes and save. Add your newly created content type and delete the default one from this library.
Create appropriate views on this library (optional) and on your other sites, where you need to display documents, use the Content Search Web Part and filter content based on organizational property of your choice.