I don't have an exact solution, but here are a few things to check.
First have your tried with different baud rates? I know some xbee modules encrypt the connection which takes abit longer so running on a lower baudrate might improve things. Just remember to set the telemetry baud rate to be the same on the pixhawk
Also you can possibly try running a range check on your xbee modules via xctu software. But I can't bee too much help as the last time I played with an xbee module was about 3 years ago so can't really remember.
Let me know how you get on so we can figure this out