generate_packets.py: turn computed fields into properties
Part of #43927. Using properties (@property) instead of computing values in the constructor splits code into more manageable chunks that can be annotated and documented independently.
Part of #43927. Using properties (@property) instead of computing values in the constructor splits code into more manageable chunks that can be annotated and documented independently.