Try with directive __attribute__((packed)):
uint16_t m_packetFormat; // 2020
Clearly has to be done in all struct declaration. You can evaluate with sizeof(Variable) and put out with serial.print:
If the problem persist I suppose that also the position of variables (memory adrress) inside a struct can change (not an expert).
So for sure the first proposed solution remain the best, with somes improvement (array in place of multiple declarations).