Actually your scenario is less secure than what you think in my opinion. Your PBX is part of YOUR PRIVATE ASSETS. it involves private telephone calls, billing information, voip provider accounts and Tel Lines hence it should go in a TRUSTED ZONE not placed in an Untrusted Zone like DMZ. Public Boxes which are used for public services go in DMZ (considered untrusted). But anyway - it is up to you to decide and in no way am I telling you what to do with your network. i would put something like Counterstrike gaming server in dmz not my PBX.
Now Sip and RTP traffic are different - we assume it is a routing problem. And the only thing you have not tried so far is to put your pbx inside your network. We need to rule out whether this is a pbx problem, a network problem or a router problem. Without tests you can never know. Also You cannot assume that if sip traffic reaches, rtp traffic must automatically reach. This is incorrect logic. They are separate. They run on different ports and are different services.
Also if you want to keep your router in DMZ, start a wireshark capture on that box and check what the pbx is receiving. If you dont see rtp packets - your next option is to syslog the router and see whether the packets are received by the router or not. If yes, simple - the router is dropping them or they are being sent somewhere else. First identify whether this is the case or not.