TL;DR - As far as I can figure, in my case at least, all of my missing contacts were from a specific time frame, were getting saved by default to the Exchange account, the exchange account wasn't getting backed up in my iCloud contacts, and some update either from Apple or Exchange caused the breakdown.
I don't know if it's the same issue, but my phone suddenly lost about 1/2 of my contacts overnight, and they all seemed to be contacts within a specific time range (contacts created between the present and 3 - 4 years were gone, but older contacts were still there).
- I tried just about everything I could think of (rebooting, checking data backup, checking my iPhone/iCloud/contacts/account settings, etc.).
- With some help from Apple support, I was able to do a phone reset using a backup from a few days before my contacts went missing, and my missing contacts returned. BUT after a few hours, while I was working to get signed back into my apps, I discovered that the contacts were missing again!
- I did another phone reset from that same backup, and I figured out that all the missing contacts were connected to my work "exchange" account, which was not backing up to iCloud for some reason (I still don't know why).
- As soon as I realized this I turned off the wi-fi on my phone (just in case it tried to update or something), and exported those "exchange" and all other contacts as a VCF file before they disappeared again.
- Following these instructions, I then logged into iCloud.com and imported the VCF file as a new list, and all of the missing contacts were back on my phone again as an iCloud list. Hopefully it stays fixed this time.