I've been building a pretty complex scheduling system for work, and although it's been designed with our requirements in mind I believe it is general enough to be useful in plenty of places.
Essentially it's a combination of perl classes, a daemon and a database backend, which provides various ways to schedule tasks:
I'm unsure which of these conditions are exclusive, and hopefully testing the scheduler with our system will help decide which can't really be used together, but you should be able to combine them sensibly.
The system is kind of peer to peer, in that there is no master node, only the database itself, which all the nodes access.
So is it just me - or is that pretty useful?
Naturally it has a seperate web gui to manage it, built using Maypole.