So everything seems to be consistent - there's only
one slot taken in this block (by sid=226 I guess), the
second slot is no longer active (cleaned up during
delayed block cleanout I presume) and yet session 226
is blocked by 165. Am I missing something obvious?

Just for completence - I think part of the problem in
this app is the ITL shortage on table 5004 as there
are quite a few 'TX' entries in v$lock requesting mode
4 locks and sitting on the update statements. Not sure
if this is related to the question above.