Outside of using Lists, the only way to control your levels of subscription is through Publication lists or suppression/exclusion lists (which can be data extensions).
Personally, the easiest by far is Publication lists as this is mostly handled natively by SFMC - so I would highly recommend using this option. All you would need to do is create the list (super simple) and then assign it on each send to the DE you attach in the Send definition. The subscription status, etc is then handled by SFMC.
If you want to stay away from all lists and want to use the exclusion/suppression list option, you will need to set up automations or API calls to constantly update these lists. You then would need to manually add each appropriate exclusion/suppression list on each send definition you put out. This is a very complex solution for an enterprise solution, so I would only recommend if you are doing it on a small scale.