Well! I thought before I reinstalled I'd try a forced fsck, so ran:
e2fsck -f /dev/hdb1
which gave a too many errors error and made me run it manually, which I did, and after pressing return a billion times to fix problems, I seem to have fixed this mess. This is, of course, very tentative, but very hopeful!
Thanks for the answers, and wish me luck!