An IP6 packet is almost the same as an IP4 packet in format. The only real difference between the two is that that some of the fields were made bigger at the expense of the options field (in IP4). Options is replaced with extension headers.
A similar thing could have been achieved with IP4 using a DWORD in the options allocated to carry 4 MSB (most significant bytes) 2 each for the source and destination. It would have saved creating an entirely new stack and having things like IP4 fallback.

