if you have threads that keeps using the CPU without doing anything that can make them suspended (I/O, page miss, ...), they are likely to be batch (not user-reactive) CPU-bound process. Except badly-behaved programs (here: jmp here

), the only programs i can see that would fall in this category is heavy-computing programs like raytracers, renderers, etc.
Such threads should not make responsiveness decrease (imho), thus i suggest they receive a lower priority and be interruptible by event-responding threads.
if they're purely CPU-bound (i.e. no synchronization of any kind), there's no reason to continue interlapping them rather than executing them serially (run raytracing task 1 to completion, then task 2 to completion ...), which can lead to faster global completion time as it reduces context switches ... moreover, users are likely to prefer a finished task after 50% of the total time and the other task after the other 50% than having to wait the whole completion time for the first byte of results ...
maybe this could be a user choice (whether & when to turn process to batch mode, ...)
The same kind of operation can be done with I/O-bound process (serializing big disk copies to avoid the disk to seek seeek seeeeeek and seeeeeek again problem you have if you start 2 copies from a CDROM in parallel with windows)
does it make sense ?