I'm quite certain the problem with reappearing contacts and thus doubles in the context of synchronization is NOT caused by the recent migration, as I've experienced it already in 2014, when I got my Windows Phone.
(It is imaginable though that the problem is rooted in the old live.com system while the new system isn't entirely detached from that.)
My suspicion is that the reappearing is caused by imperfect synchronization. When you add a contact entry to one database (say - MS Outlook) then the synchronization function creates a similar entry in the other database (say - outlook.com). This new entry
is supposed to be identical, but it is not. Mostly the difference is invisible to the naked eye, but sometimes you can see it. I've seen cases where the font of the notes attached to a contact entry was changed.
Now, when you run synchronization again, it sees two contact entries in both databases, which are very similar, but not identical. Therefore another entry is created, at least in outlook.com. These different entries are sufficiently similar though to get
"linked" automatically, so you don't see any of this on the Windows Phone (unless you specifically look at the links).
This shows the fundamental flaw of synchronizing via the cloud: with so many different devices linked to the same account, if only one of them synchronizes less than perfectly, the whole thing blows up.
Unfortunately this does not explain why my Windows Phone does not sync contacts and calendars anymore (no problem with mail though), producing error code 80C805E2. I can only speculate that this is related
to the design of the synchronization process, which is incredibly slow. The original synchronization of 5k contacts (30 MB of data) into my (empty) phone took no less than two whole weeks!