You do need more time in Sichuan but it can be split on the front and back end since your entry/exit is CTU. If you're set on the cruise, do it in the direction you currently have, downriver. I wouldn't bother with Wuhan or Changsha. Just get a standard train from Yichang to Zhangjiajie--you can save yourself a day by taking the late night (1 am) train out from Yichang following your arrival into port, without spending the night in a Yichang hotel. You'll need two full days and nights for Wulingyuan or 1 each for Wulingyuan + Tianmen mountain. Since you're going overland from ZJJ towards Huaihua anyway, might as well get an early start leaving ZJJ and stop in Fenghuang for part of the afternoon before continuing on to Huaihua for the night. That Huaihua-Guilin train is daytime and leaves early. Put any leftover time after that to Chengdu area at the end.
I think including Kunming on this trip is rather gratuitous since it's not worth going to see on its own if you aren't doing anything else in Yunnan. Suggest you fly from Guilin to Chengdu and put those 2 saved nights to better use by spreading around the balance of your itinerary.