Download iPhoto Library Manager and use its rebuild function. This will create a new library based on data in the albumdata.xml file. Not everything will be brought over - no slideshows, books or calendars, for instance - but it should get all your albums and keywords back.
Because this process creates an entirely new library and leaves your old one untouched, it is non-destructive, and if you're not happy with the results you can simply return to your old one.
On the 3rd attempt and 1.5 days, iPhoto Library Manager rebuilt the library (first time crashed after a few minutes, second time 2/3rds of the way through).
When the process finished, there was a message from iPhoto Library Manager saying it couldn't copy an image over and that there were some errors (I saved the log file if that helps).
I've just opened it up, and unfortunately I appear to still be missing images (the photo library is 29,692 vs. previously 29,692). When I do 'Get Info' on the folder within the iPhoto database package (i.e. the Masters folder), it shows around 33,000 files - I assume that these are all image files, so it would seem I'm missing about 3,300 images when I open iPhoto?
Is there any additional steps that I can take? Or given that I made a copy of the Masters folder elsewhere, should I perhaps just try importing these? I assume that iPhoto will use the existing folder structure to mark events, etc... I can live without the album info (I hadn't tagged photos or anything else).
I tried just reimporting the raw images, and had the same issues with missing photos, etc... (albeit not as many). I tried again, although this time importing one folder at a time (representing a year's worth of photos), and that seems to have done the trick. There is still, however, a dispartity between the number of photos in the folders, and what was imported:
2004: 2,153 => 2,115 = 38 missing?
2005: 2,519 => 2,469 = 50 missing?
2006: 2,540 => 2,501 = 39 missing?
2007: 2,688 => 2,652 = 36 missing?
2008: 6,703 => 6,650 = 53 missing?
2009: 5,234 => 5,207 = 27 missing?
2010: 4,317 => 4,289 = 28 missing?
2011: 5,709 => 5,630 = 79 missing?
2012: 1,152 => 1,129 = 23 missing?
Total: 33,015 => 32,642 = 373 missing?
... and there also appears to be a different number of files also when I look in the 'Show Package Contents'... but overall it seems ok!