OpenPGP Signature Packet hashed data
I believe the answer can be found in section 5.2.4, "Computing Signatures".  According to that section, what you actually need to hash is the concatenation of:


the key packet (with an old-style packet header with a two-byte length &mdash; but your sample key packet has that header type already),
for the first (certification) signature, the constant byte 0xB4, a four-byte number giving the length of the user ID packet body, and the user ID packet body itself,
for the second (subkey binding) signature, the subkey packet (using the same type of header as for the key packet above),
a "trailer" consisting of the beginning of the signature packet body, from the version number field to the end of the hashed subpacket data, and
a final six-byte trailer consisting of the bytes 0x04 and 0xFF, and a four-byte big-endian number giving the length of the "trailer" string from the previous string.


I haven't checked if that will actually produce the correct hashes for your packet, but I believe it should.

Note that I've simplified the description somewhat; you should actually read section 5.2.4 of the RFC carefully to figure out just what goes into the hash under various circumstances, since it appears to depend on many things.

EDIT: While simplifying, I accidentally left out some pretty major parts. :(  I've added them in now, hopefully this time I've got everything that's needed.  Alas, I can't really check it now either, and probably won't have much chance of participating here during this week.

(Oh, and yes, I agree, that all looks like an awful mess.  I assume there are reasons for all the quirks, and that it probably looks easier to read in source code form, but that doesn't make it any less messy.)



Ps. As for "hash context", other places where the term is used, particularly section 3.7.1.1, suggest that it basically means an object or data structure that contains the internal state of the hash function and supports methods for providing further input and for finalizing the hash and returning the output. (Most cryptographic hash implementations provide such an API.)

In particular, in various parts of the RFC, it is recommended that several hashes be computed in parallel by maintaining multiple hash contexts (i.e. hash object instances).