Finally resolved. The key was sending a formal written request via their complaints process and mentioning the Ombudsman in the same email. They moved very quickly after that.
For anyone going through the same thing: log every call with date, time and what was said. Then send a written complaint by email titled “Formal Complaint” which triggers their 8-week resolution clock. If no resolution in 8 weeks you can escalate to the Energy Ombudsman for free.
My £340 credit was refunded within 10 days of the formal complaint email. Has anyone else had success with this approach?