How to Track Relationships in CRM

In most CRM you can relate Contacts with other entities like Accounts or Opportunities. What if you wanted to relate a contact with another instance of contact? Why this is important? 

These kinds of relationships can come handy in many business situations where you need to keep track of relationships. Suppose you are a real estate agent and you want to track a buyer (Contact), his agent(Contact), the broker(An Account) and the sale(an opportunity).