Data over XBee works for a few seconds then stops...

The CTS pin will go up and down depending on whether it is ready to take in more data.
Take a look at page 13 of the datasheet.
If the XBee is not ready (CTS high), all the data that you send from the Arduino on the serial to the XBee will be ignored/dropped. You are running at quite high serial baud rate right?

In your data packet, do you have a packet number? Like a free running number that increases over time (and overflow)? This can be used to indicate whether all packet are received at your receiver end (PC side).