Solved I think. I was asked by in-country partners to keep an audit trail of tracker data so I enabled the Tracked Entity Instance Audit Log for my main TEI “Case”. Disabling this seems to totally fix my issue.
This is reproducible in the 2.30 version on play.dhis2.org so I have added a comment to the JIRA issue mentioned above.
From comments I read yesterday which I can’t find now it looks like the tracker audit log code was added to satisfy a requirement of India but doesn’t get much attention now. It is not a particular requirement of my project as I can keep regular backups as a sort of audit trail.