Implementing supplemental error correction for XBEE?

The issue with this method is, it would require at 16bit data index which would mean three bytes would be transferred for each byte.

If you create packets that contain a start marker, a packet number, 20 bytes, a checksum and an end marker, the receiving end can find the start and end markers, compute the checksum, and determine if packet n was received correctly. If not, don't acknowledge it. The sender would then need to send packet n again. If the nth packet was acknowledged, the sender would know that it was not necessary to send that packet again.

You can change the size of the packet. Larger packets have less overhead (the start and end markers, the packet number, and the checksum). The tradeoff is that larger packets are harder to send/receive without lost/mangled bytes.

Reliable power and proper XBee selection and configuration have a lot to do with packets getting through intact. You haven't told us anything about the XBees you have, the range the data is being transmitted, or how the XBees are configured or powered.