Some other things you might want to try:
Inline small dictionary tables in the PyObject struct and only revert to external tables for larger ones. (I have an old patch for this one which you might want to update)
Optimize perfect hashings. Sometimes (hopefully most of the times) Python will generate a perfect hashing for a set of attributes. In that case, it could set a flag in the dictionary object to be able to use a faster lookup function.
BTW, could you run pybench against your patch ?
-- Marc-Andre Lemburg CEO eGenix.com Software GmbH