I am trying to use standard Opportunity Team Member functionality and it doesn't seem to match the documentation.
I have the following sharing model
account: public read/write opportunity: private
To add an opportunity team member it appears that the user needs to be the owner of the account (or a sys admin) rather than just the owner of the opportunity. From the docs:
Only members with read access to the associated account can be added to the opportunity team unless you have the “Modify All Data” permission or are the account owner or above the account owner in the role hierarchy. Adding Opportunity Team Members
Since accounts are public read/write every user already has read access to the account but this is what seems to be causing the issue.