When setting dynamic timeouts, we look at the historic runtime of a test/task. The runtime of any hooks that are run will be included with the test they are associated with. This works pretty well, except for the "CleanEveryN' hook which is run every Nth test (usually 20). The problem with this hook is that it has a relatively large runtime and it can be associated with different tests on different runs. This sometimes results in sub-suites containing tests with no "CleanEveryN" runtimes associated with them that will suddenly start having "CleanEveryN" run. And it quickly eats up the padding we put in place for timeouts.
We need to be smarter about how we include the "CleanEveryN" runtimes when determining timeouts to avoid this problem.