What would it take to build a connector between SAP r/3 and Salesforce? At what point would it be more efficient to use a third party application/service?
It depends on what you want to achieve with the integration. Do you want to retrieve data from from SAP in real time? In this case, I would point you to Salesforce Connect or Overcast (full disclosure: I work for the company that created Overcast). You can also write your own Apex classes to retrieve the data via callouts -- if you only have a very small number of integrations with SAP to be considered, then this would be feasible (though you need to have some fairly detailed knowledge of the SAP side, and be able to expose web services from SAP). If you want to do more complex things such as posting Sales Orders to SAP or replicating the complex SAP business objects to Salesforce, then you should definitely go with a pre-built solution that handles things like mapping, interfaces, monitoring, etc. Here again Overcast would be an excellent option, as it handles all of this complexity by design; other tools such as Jitterbit, etc. are available but don't really handle SAP complexity out-of-the-box.