How can I implement 3-way relationship (reference) between entities?
The Relation module should be ideal for that. It allows you to create a single relation entity that links 3 (or more) entities together. It's in beta and you may have to do some work to get the user interface you need (I say that based on the Relation session at DrupalCon London), but it's flexibility is superior to any other relation/reference module out there.