Then it looks like instead of using either of these 2 functions to store addon data against:
GetUnitName("player")
GetRawUnitName("player")
We should actually be using:
GetCurrentCharacterId()
I did a very quick test and the ID seems unique to the character and was the same after using a character name change token.
Also looking forward to making use of GetCharacterInfo(index)