I made a game once which was centered around a game-show setting (and I'm currently working on an extensive remake of that, as a side project). In it, there were 6 main characters, and the player could select one to use each day (they each had slightly different abilities for the game show). And then there were 40 different "Rivals", NPCs who could compete against you in the game show, which fell into 8 different classes (Scholar, Dancer, Hippie Old Man, Elf, etc. - it was very lighthearted). Each day, 11 out of the 40 Rivals were selected at random to compete against you. (There are also several more NPCs that appear around town, just to make it feel more alive and give you some hints.)
In that original version, the Rivals only had a couple unique lines apiece (and skills based on their Class), but when I watched someone LP the game, by the third time or so that a Rival appeared, they could guess who the Rival was based on their intro lines, so it felt like it wasn't too much - the NPC's persona would "stick" with the player. In the remake, my plan is to flesh it out to 50-60 Rivals, each with a dozen or so different lines that can trigger during the game show (for successes, taunts, telegraphs that they're afraid of something, etc.), and to give each "Class" a personality (for example Scholars are better at Puzzle games, Elves are better at Dexterity games, and Merchants will go for any temptation presented to them). I'm also going to make some of the Rivals appear around town as NPCs, where you can get to learn a little more about them and their motivations, as well as accept quests from them (e.g. a Scholar with runaway robots that you need to track down). I think this will really make the Rivals feel like characters rather than just AI opponents!
So with all that being said, here's what I learned: as long as your player gets to see these NPCs repeatedly, there's almost no amount that's "too much"! 40, 60, even 100 NPCs would be fine, even for a small game! If you don't think you can make 100 interesting NPCs, that's fine - make 20 interesting ones instead. But don't worry about "too much" as long as you can keep them interesting. And if you can make those NPCs the opponents in the Game Show, or tie them into the game show in some other way, you give the player an immediate reason to become "invested" in those NPCs, which is a really neat little trick you can use.