какое-либо предложение идеи о BGW для продолжительной операции?
Да, это так :). Нет ничего плохого в наличии длительных операций в BackgroundWorker или ThreadPool ... если в коде есть тупиковые ситуации из-за длительных операций, то с кодом что-то не так.
Предложение: разрешите отмену операции. BGW позволяет это сделать, задав свойство типа bool. Вам необходимо периодически проверять это свойство в вашем методе DoWork.