This is something that came to my mind awhile back when trying to work on our data model. Currently, as @Chr1sG pointed out, you need some intermediate type to describe the role or any other special attributes associated specifically between two types, which isn’t easy to manage in Fibery because you can’t easily edit multiple fields on a related entity from the entity view. You would create each entity to map between the types, then you have to open that bridging entity and set the values on it.
If you consider something like JIRA and how it can have Issues associated with other Issues with Depends On, Blocks, Blocked By, etc. This tells you more than just having them all equally related. To represent the same information in Fibery, you’d need to have that separate joining table, or you’d have to create a relationship between Issue and Issue for each relationship type you want to represent.
This is somewhat related to More Flexible Board Columns/Rows because in general Fibery seems to heavily penalize you for using many to many relationships, since they can’t be utilized in multiple visualization types for grouping, nesting, etc. I think if something like this was supported, then the views might need some thought on how to show the information effectively.