I guess it seems reasonable enough. The problem with mpsleep in general is that mudprogs don't really have any kind of structural representation, and interpreting them means literally stepping through the string of the program. So yeah, it's necessarily a complex operation, because you have to keep track of a lot of stuff. And a lot can go wrong, too: the mob might disappear (die) while still sleeping or something like that.
To be honest I haven't looked at Rasmus's mpsleep code so I don't know much about how it works.
What you described, and what Conner gave the detail for, seems like a reasonable solution although you'll have to watch out for gotchas like dying mobs.
Do any bases have mpsleep built in, out of curiosity?