I occasionally get rpm commands hanging, they are only killable with a -9. This Redhat bugzilla entry offers a solution:

rm -f /var/lib/rpm/__db*.

Which seems to work…