Cleaning inner self-intersections
The reason it doesn't cut clean is because this kind of curved tube has self-reverting faces in the corners :



You can fix it by using the knife, adding vertices and merging the closest vertices in those areas until you get this kind of result :



Then you should be able to select the self-intersected part of the tube with Ctrl+L :



I don't think there's any automated way to do this.