My methods are quite clunky, and could probably do with (another) refactor, but a combination of families, instance variables and folders of animations on a single sprite is broadly how I am working with multiple NPC types in my project. Though my NPCs will be pre-placed in the layout so I don't need to worry about spawning.
This tutorial (again, probably in need of a refactor) talks through how I've done it. It's not the best thing in the world, and I will probably go back and experiment a bit more with timers and other bits later down the line. And it's probably not exactly what you're looking for, but perhaps parts of it could be adapted for what you want?