No I mean, just save the sign location somewhere associated with the UUID. What's on the sign is still the player's name, but doesn't actually mean anything. All your internal logic would be about the UUID. You can update the sign's playername whenever you want: join, interact, chunkload... The player doesn't see any difference, and that's what counts.