Ah, seems you are not familiar with game_events. Game_events have 2 base funkcions (when refering only to NPCs) - they hide NPCs which are marked to not be spawned during them, and unhide NPCs which are marked to be spawned during them.
For instance, you will create game_event with ID 5 which will occur once per day for 8 hours, meaning it will be active only, lets say from 8 AM to 4 PM every day (this is done in game_event table). Then, you can add creature into game_event_creature and link it with event.
For instance, you want creature with GUID 654 to NOT be spawned during event (it is lets say blacksmith who is sleeping at home, but during this event he's working at smithy, so you will want to have sleeping blacksmith hidden) and creature with GUI 721 to BE spawned, because thats the blacksmith, who is at smithy, going around, working there and so on.
So all you will need to do is to add 2 rows into game_event_creature, one will have eventEntry 5 and GUID 721 (NPC 721 will BE spawned during event with ID 5), while the second row will have eventEntry -5 and GUID 654 (NPC 654 will NOT be spawned during event with ID 5).
Now, you have 2 blacksmiths, one spawned at forge only during the event, one despawned during the event, meaning whenever there will be no blacksmith at forge, he will be spawned at home. Then you can just create two waypoint paths with scripts, emotes and such stuff, one for man resting at home and one for our heroic worker and... you are done.