So this is likely a result of my naivety but forwarding 5060 to my PBX seems to have resolved the issue. I guess I should have seen that with the many my-public-ip:5060 entries in the logs, but I thought 5060 was used just for registering. I had forwarded a different port to 5060 on my PBX and with everything working except the outbound call duration, I assumed it was ok.
I realize security through obscurity isn’t really security, but I was really hoping to not have to forward the default ports to get things to work.
Regardless, as of now it seems to have resolved my dropped call issue. Go figure.
Thank you to everyone in this thread for all your help. I cannot express in words just how much it’s appreciated.