I learned a technique for rigging a character's spine that might help you. It used IK spline IK but allowed for independent rotations on each end.
Instead of using the twist and roll attributes of the IK controller, add clusters for each of the control points of the spline IK curve. Then parent the clusters to the control object on either end of the joint chain. Depending on where the clusters are placed, you can get more or less stiffness. To get the twisting, write an expression that distributes the rotation of each control object down the chain (effect is reduced the farther away it is).
float $A = hipsCTRL.rotateY;
float $B = chestCTRL.rotateY;
cl_spinebJNT.rotateX = ($A * 0.9) + ($B * 0.1);
cl_spinecJNT.rotateX = ($A * 0.7) + ($B * 0.3);
cl_spinedJNT.rotateX = ($A * 0.5) + ($B * 0.5);
cl_spineeJNT.rotateX = ($A * 0.3) + ($B * 0.7);
cl_spinefJNT.rotateX = ($A * 0.1) + ($B * 0.9);
You could add some intermediate controls the middle of the chain as well, such as if the hose was long, to add more flexing or bounciness.