The stand should have ended much earlier as Gus Miller totally missed a simple catch at long-off that would have removed Kohler-Cadmore for just 7 but he went on to strike four sixes to reach fifty in 38 balls before he finally fell to Ben Sanderson.
Sean Dickson then made 33 off 17 balls to lift Somerset to their second-highest total of the tournament.
Ricardo Vasconcelos ignited the chase by taking 18 from the final over of the powerplay, bowled by Jake Ball, to leave the home side 52-1 after six.
Willey followed with a flat six over long-on off Craig Overton’s final ball before another six was pulled over deep square.
But Vasconcelos scooped Lewis Gregory to long leg to fall for 30 in 24 balls and after Justin Broad began to fire with 29 in 18 balls, he popped a return catch back to Gregory to leave Northants 114-3 in the 13th over.
79 were left needed from the final five overs and Saif Zaib kept the hosts in it with two pick-ups over the leg side for six but he skied up a catch to fall for 32 in 16 balls.
Willey brought up his half-century in 35 deliveries but became starved of the strike and went he also fell, to Jake Ball, the Northants chase petered out.