This is 'the' diff that enables D2667 down the line.
It replaces the various u16 and u32 with a proper data structure, quite similarly to @nani's playerData1b, but with a more generic structure.
It's designed to handle up to 64 bits right now, but the design should be transparently extendible (with some work) to an arbitrarily high number.
(On top of D2784)