Честно говоря, познаний не хватает дальше... Но — ThreadPool вообще предназначен для коротких задач, в этом его смысл — выполнить задачу и взять другую.
И к тому же вы пишете
Иногда (нечасто) у него будет необходимость запустить 'длинную' (до 3 мин) задачу
Поэтому я думаю, что лучше все-таки через "new Thread(...)". Когда же исчерпаются системные ресурсы — ну что ж, значит, они кончились. А выбор между отдельными потоками и ThreadPool я бы производил по соотношению между продолжительностью задачи и частотой поступления задач. Часто поступают короткие задачи — ThreadPool. Редко поступают длинные — новые потоки.