Just my opinion(s), I could be wrong and likely am.
- "in place upgrade... twice". From what I recall when we did similar, the most difficult things to t-shoot post upgrade were any IIS-related things. It's been a while, so my memory is fuzzy, but IIS components seem to have changed slightly between the versions, causing some interesting issues to be resolved. And it wasn't clearly obvious things... just goofiness; that ended up being subtle things to tweak or reinstall.
- build new systems and migrate: if I remember the docs correctly, this is the supported method (again, I may be wrong). If it is important to you to do things in the supported way, this method would be the one to use. Of course, the downside is what you mean by "migration". By migration, do you mean a WHOLE NEW SITE CODE, and migrate the clients to the entirely new system (side by side migration), or do you mean following the documentation for standing up a new server, then shutting down the cm services on the old, renaming the old server... rename the new server to <old server name>, and restoring from backup? That's two different paths, really.
- Secondaries working properly... I have no opinion on. Haven't used secondary sites in years and years. Someone else would have to chime in on this... I literally have no idea.