In addition to the above two adds, I also changed a couple of things related to our firewall.
1. I made sure the default gateway for the PBX and dSIPRouter were the same. I'm not 100% sure this is necessary, but I noticed that the PBX would attempt to send outbound RTP via it's gateway instead of back through the RTP proxy. Aligning default gateways along with #2 below seems to have mitigated that issue.
2. I enabled NAT reflection on the RTP firewall port forwarding rules. I did this after noticing that extension-to-PBX calls like voice-mail and the like were not getting audio. I also saw that the PBX was reaching out again through the external IP of the proxy, so hairpinning allows this.
I'm not sure that any of this is the "correct" way to solve these issues, but this is the most consistent I've had dSIPRouter for my use-case since I tried implementing it.