Why do you filter out tasks that already have a copy running?  Seems like you might as well use the better location in the event of task failure or speculation