A bit more information.
I found that if I take an offline backup created around the same time as my online backup, roll forward the transaction log files included in the offline backup using a recovery.conf file, the duplicate records do NOT exist.
Therefore it seems there is no corruption in the WAL files. The problem must be in the PITR processing of the online backup file.
- r.