"Our desired behavior is that all pushes/merges to [only certain branches] trigger builds and for all others opening a pull request or pushing to a pull request triggers a build. How can we do this?"
This behavior is configurable at the repository and branch levels, and you'll need custom configurations in both to achieve it. For exisiting branches, from the gear icon on the chosen repo's dashboard you will want view the "When to Build" tab and to set "Repository CI mode" to "All." You will then need to view the "Configure Existing Branches" tab and turn individual branches for which you want to all pushes/merges to trigger builds set to "On" and all other branches set to "PR."
To enable this for all future branches you will need to configure "Default CI Mode for New Branches" set to "Pull Request". For any future branches you add that you wish to trigger builds with all pushes/merges you will need to manually configure that individual branch to "On" in the "Configure Existing Branches" tab.