Ahh yes - my OTTB used to do this and it was infuriating. What I learned to do with him was remove the canter from our workouts all together until he agreed to listen. In short, better canter comes from better trot, so do more trot. I'd do entire 45 min - 60 min workouts just w/t and doing like you said serpentines, leg yields, circles, bending, shoulders in, etc. etc. By keeping him IN the trot, and not letting him canter, you're working the right muscles to make trotting easier in the long run. Any time he feels like he's about to canter, back to walk. WORKING walk - with again serpentines, leg yields, shoulders in, etc. etc. etc. get the theme here? Lol
It worked wonders for my TB who's super hot, and when out of work it may still take him some time to settle, overall it's really great in that his trot has come miles, and the canter work we do has been good - and we can now come back to trot and settle, even if he works himself up I can settle after a few as opposed to before where it became the same never ending fight you describe.