This is a long time in the making, and I've finally got it working so I thought I'd share this with as many people as I can in case they're in a similar situation.
Long story short - HP SmartArray P410 failed, got another one (which worked for a while) then also failed. I also had a P200/ZM in there with another array (failed). I was sick of HP by that point, but I needed to recover my array's data - was not even going to consider getting another SmartArray card to copy it off with.
So. After much research, I found that HP employ some painful RAID5 algorithms (called Delayed Parity) that make normal RAID5 recovery methods very, very difficult.
So I wrote my own block driver. This driver (much like md-raid) takes the disks and translates them into a logical drive (array) taking into account HP's bastard algorithms. It's not a proper RAID solution - no paritiy calculations are done, but it should allow you to mount the array and copy it off (as I have now done).
Note: Some knowledge of C and compiling C required, see answers for the download.