It seems to me the fundamental problem (besides shortage of rolling stock) is that the XC routes mix up local and long-distance journeys.
If you compare with - say - the Avanti or LNER routes out of London, it's a bit different. Those services are busiest at the London end of their routes, and will also tend to only carry long-distance passengers out of London by the simple device of not stopping anywhere for ages. But as they go further North, many of them turn into local services, for example carrying passengers from Preston to Lancaster or Crewe to Chester or Runcorn to Liverpool. That's not totally ideal because it means you're carrying lots of local passengers on trains that are not really designed for that, and tend to therefore have slowish boarding, but it works in terms of capacity because the local passengers are being carried at points far from London where there are no longer so many long-distance passengers on the train.
By contrast, long distance XC services tend to stop almost everywhere even at the busiest sections of their routes, which means they are mixing local and long-distance passengers right at the point where there's no capacity to do so, as well as making journeys for long-distance passengers very slow. I wonder if a more sensible timetable would have the Scotland/Newcastle - SouthWest routes do something like, Newcastle->Leeds->Birmingham New St->Bristol Temple Meads->Exeter St Davids, not stopping anywhere else over that section of the route, but keeping a similar stopping pattern to today North of Newcastle and West of Exeter, and have separate slower services running Newcastle-Birmingham, and Birmingham-Exeter to serve the other stations. I realise though that in itself probably requires some capacity and rolling stock enhancements.