The best long term solution is 1, but you don't need to do this in one single shot.
Solution 1 reduce the development cycle time, give better feedback on failures and help you to design few coupled units.
But in real world, you don't have much time and can't get uncovered, so you should do solution 2 and incrementally extract non threaded code from the threaded using tests to make sure the behavior is the same.
When you get statisfied with unit test coverage, you may decide if you mantain the integration test running on your CI or not.