I think that when using the 64-bit IEEE address of a node that is not the coordinator, you need to use 0xFFFE as the 16-bit network address. Try changing this section of your code:
// 16-bit destination network address
const byte MSB_13 = 0xFF;
const byte LSB_14 = 0xFE;
When you're ready to move away from the Arduino platform, take a look at this Open Source, portable, ANSI C XBee Host Library for communicating with the XBee radio in API mode. It could simplify a lot of your software development.