Works great as is, no other diodes are needed.
For the interrupts, all ones are shifted into the 595 and it is left that way.
No constant need for scanning.
Since you have a one in all the rows, when you touch any key an interrupt is generated via D9-16.
With the interrupt triggered, code simply sends the 595 with a walking 1 pattern while looking for return key in pattern from the 165.
Multiple key presses are ignored in the code.
If you are referring to ghosting, point taken. See: http://pcbheaven.com/wikipages/How_Key_Matrices_Works/