Just to follow up with everyone, I *think* we have resolved the issue. I originally had restricted calls to the OPUS code for the iPhone users but this would cause issues with some other calls with no audio in either direction.
The fix (that worked for us so far) was to adjust the audio codec to this order of preference:
OPUS
G.711U
G.711A
So far over the last two weeks we have not had a single inbound call without audio for anyone running an iPhone, however this caused some issues for outbound audio for Android users so we have manually adjusted on the extension settings where needed so we ran the codecs for them in this order and that fixed the issue.
G.711U
G.711A
OPUS