Great success!
I must have misused LazRes somehow because the resulting res file was only 1k. I then tried using Delphi's rc which produced a proper res file. Using the {$R 'libresources.res' 'libresources.rc'} it now works, 100%.
I tried the {$R *.tlb} after updating the source and it manages to link it, but it can't register the tlb as regsvr32 A/Vs on it still, not sure why.
On the COM side of thing I've noticed that server-side exceptions don't bubble up nicely as they do in Delphi, you just get an A/V on the client. I can live with that though.
Thank-you Paul and Dimitry for your help and patience! I am off to the races.