I have found the problem. The email address in the configuration was different to the one used to create the account, even though the PDT identity token was correct. (I generated a new contact email address for the site due to spam on the old one.)
There were no error messages in the Nopcommerce log at all. The order processes okay in Nopcommerce, then redirects to Paypal with all relevant details.
It allows the user to log in, but produces the error 'invoice has already been paid' when trying to process, which had nothing to do with the actual issue.
I also turned on address override, as with it off users could not log in.
Thank you for considering my issue. I hope the above helps someone else wrestling with Paypal in the future!