Maybe this is a way out. Nested tags + priority relations or links, that could be breadcrumbed or not. E.g., the user chooses which priority relation or path to display - for example in a type template or in the type itself. This would help (dynamically, if needed) scope relations - valuable in itself, because it makes certain things implicit. This in turn helps keep some kind of hierarchy when/if needed without annoying the majority of Anytype fans who prefer a purely graph-based approach.
An alternative could be some kind of dynamic inheritance of types - which was touched on in this forum - combined with relations becoming types (or similar) and having configurable parameters.
Sidenote: it’s hard to understand the broad dislike towards hierarchies. Hierarchies occur in nature and need a representation, ignoring them won’t make them go away. It doesn’t mean they have to dominate the tool. It’s great to see that some thinking on how to address this is going on.