I think you just said what I was thinking, that is why I do not use levels for my NPCs.
Let me see what will happen if I made a NPC name "The King".
Y= (((B-C)/(D-1))*(X-1))+C
Y= Age
B= Max Age
C= Adulthood Age
D= Max Level
X= Level
0. The King is born a NPC.
1. The King became a squire at the age of 15 (level 1 if he was a PC). (C=15)
2. The King will be an elder at the age of 70. (B=70)
3. The max level in my game session is 20. (D=20)
4. The King becomes a knight at the age of 18 (level 2 if he was a PC), so after 3 years of being a squire, I think it is fair that he is now proficient in all weapons, armors and shields.
5. The King becomes "king" at the age of 32 (level 7 if he was a PC), so after 14 years of being a kinght, I think it is fair for him to have an "Extra Attack".
6. The King is now middle age at 35 (level 8 if he was a PC), so after 3 years of being a non-combat commander, I think it is fair for him to lose some STR, DEX, CON and gain some INT, WIS, CHA.
7. The King is now old and wise at the age of 50 (level 13 if he was a PC), so after 18 years of being a non-combat commander, I think it is fair for him to lose some more STR, DEX, CON and gain some more INT, WIS, CHA. Also any knight under his command has "Advantage".
8. Now I have a NPC of a king with a history and years lived that does not follow levels and the skills I gave him does not make the players I DM feel cheated.