Rather than special-casing ExceptionWithThread here in failure, what about having FailOnTimeout create a MultipleFailureException, with both the "host" exception and a synthetic exception from the failing thread?  That's already handled.