Are you washing the shirts and undergarments using a gentle or delicates wash cycle? If not try it. It agitates and spins the clothing at a reduced speed, which causes less damage to the clothing. Also try placing the undergarments in mesh laundry wash bags. As they are usually of a more delicate material being in the bag(s) will prevent them from being caught and snagged by the other clothing during the wash cycle.
Not sure about the towels but perhaps they might be becoming frayed due to the dryer setting being too hot. I realize that you want them dry, but there is dry and then there is also 'bone dry' (this might also apply to the other clothing) . How much lint is being trapped in the dryer when the towels are being dried? If there is a lot, then the material is being removed from the towels, making them thinner and more prone to fraying.