Sorry dmj - it wasn't as easy as I'd hoped :) I've put some feelers out to other folks to see if I can find an "official" answer for you.
My educated guesses from poking around - and after you already did most of the heavy lifting:
Fields 1-4 appear to be used to specify sizes under certain conditions, but are unused with straight file backups. They are taken in pairs - one is gigabytes and the other is the remainder - you add 'em to get the final size. All this is moot as they were always 0 in my tests and I don't think you'd ever get nonzero results from the command line. :)
Field 5 is the file size in bytes, as you have already figued out.
Fields 6 and 7 file and block numbers and go with the device number in field 8, which you have already figured out.
Field 9 is a "this file is in the image" flag, looks like. (It was always 1 whenever I tested it out, which makes sense)
I never would have figured out field 10 in a zillion years - fortunately you already figured out it was the permission. :)
Fields 11 and 12 are obviously user and group, as you have already figured out.
Field 13 looks like file size in bytes again. It's possible that if you're using compression, this one (or field 5) would change to the compressed file size in bytes, but that's a REAL reach of a guess from me. I probably shouldn't assume there's an actual reason for listing the bytes twice :)
Fields 14-22 are pretty much exactly as you have already figured out.
Finally, it doesn't look like this output has changed much (at all?) from the time it was introduced in 5.x through 7.x.
Hope this helps! If I find out anything more "official," I'll be sure to share it - thanks for the interesting question!