Is it possible to map any custom fields at the Contact level to an Opportunity via Process Builder or WFR? Or can this only be done via a Trigger?
For anyone seeking to do the same, this is what I did... I basically used a required lookup field to act as the "primary contact" for the opportunity. Then used process builder and a flow to copy across fields from the contact and add that same contact as a contact role on the opportunity.
It's not the most elegant solution, but it works. Here's a few resources that I found that walked me through the process, which I just adapted to suit my needs: https://judisohn.com/2015/04/06/using-salesforce-process-builder-flow-with-opportunity-contact-roles/ and http://www.arkusinc.com/archive/2015/opportunity-contact-roles-with-process-builder-and-flow