Hi Nick,
I might be on the right track with the EXISTS: each Hour has an (optional) timesheetID on it, by which you could return only certain Timesheets with hours that match (EXISTS) or do not match (NOTEXISTS) some other Hour-based criteria (such as taskID "in" some list of special Tasks).
Alternatively, in case we're overthinking this, you could also (more easily) build an Hours report, filter for the tasks that match (or do not match), and also Prompt and/or Group By the Timesheet. Different path, but might lead to the same mountaintop.
Regards,
Doug