WOW... They are all people or organisations or entities which could exist in a single table.
What I am going to suggest would be a lot simpler if you had only one CON.
You need a joint table... or 2 or 3 or...
The table would joint individuals in a relationship by 'role-type' and a 'service'. One is the 'supplier' and one is the 'customer'. Let's call the join table "Roles".
Con::ID = CON_Roles_Supplier::ID Supplier for one relationship instance called "CON_Roles_Supplier"
Con::ID = CON_Roles_Customer::ID Customer for one relationship instance called "CON_Roles_Customer"
will give you the basic relationships you need.
With those 2 pieces of information you can access all the information which exists in their CON (or other) table. The more tables... the more relationships you have to build to the Roles table.
Roles table can keep date fields for first and last contact or such and status fields for being able to archive data... as well as all the other field info you want to keep.