Login in server suddenly lost mapping to their Users in databases
Since an Availability Group is just a container of databases, you should treat users and logins the same way you would for a mirrored database, log shipping, etc. And that is that the logins on a secondary server must be created with the same explicit SID as the logins on the primary server. Otherwise the link between the server-level login and the database-level user will be broken upon failover - which I suspect is what happened here (I'm not going to try to retrace all of your steps and figure out how many times you failed over and back - let's focus on preventing this from happening again).

You say that you re-synced with the SIDs, but I don't know what that generic phrase means. You should include the code that demonstrates what you did, because if it isn't doing what you think it's doing, we may be able to tell you why, but we can't do that with just hand-waving.

The script I think you should be using is the one from Robert Davis, which Mike Walsh describes here (I'm not going to copy the code here):


Transferring Logins to a Database Mirror


There is also an SSMS add-in written by Jonathan Kehayias that helps automate synchronization of things like logins and jobs across all the nodes involved with an availability group:


Synchronize Availability Group Logins and Jobs
SQL Server Management Studio Availability Group Add-in


However, this add-in only works in SSMS 2012/2014.

Length of time is irrelevant here. You had a year of uptime. Yay! You could failover tomorrow and be right back in the same boat.