With the exception of the wcf part, all of your problems described above can be solved with Quartz.Net. Just install the service on all the necessary servers. Configure them as clustered and list them in the same database. This covers most of your items.
You can create a WCF shell if you want to communicate directly with Quartz.Net, since it only supports remote access.
You can write a job listener to register task history.
Running executable files is supported out of the box. For other types of tasks, you will need to create your own task.
source share