I have resigned myself to the fact that my upcoming 7 day rail rover break will in practice be a 6 day one as I have no intention of ending the holiday with the stress of trying to get home on a Sunday. Since there is no planning which is obvious to the average potential passenger in the running (or not) of trains on Sunday one could spend an entire day at a station waiting, or be cosily tucked up in the luggage rack on the way home with several train loads of others squeezed into the one running. ...
Have you tried "defensive scheduling"? It's something the rail industry should itself practise on a daily basis, but singularly fails to do.
Last Sunday, Rosslare to Melksham (Fishguard Harbour on rail) an "the system" came up with me changing at Bridgend and Swindon. Yes - but what if there are problems on London to Swansea? ... and I chose to change at Cardiff Central, in the knowledge that if there was a multi-hour gap on the Paddingtons from Bridgend, there would be a fallback on a different route - changing at Trowbridge, or even at Bristol Temple Meads and Bath (for a bus) or Chippenham.
London westward beyond the commuter belt has been very much a Sunday problem of late ... but defensive scheduling and informed travelog decisions offer you alternatives from Waterloo, and perhaps from Marylebone and (for the top of the North Cotswolds) even Euston.
Allow plenty of time, take a fully charged laptop so you can make use of waits, change where there's a network of options not a single service to carry on to ... and you may be lucky. Or it may be that you make your own luck.
Defensive scheduling Melksham to London is always change at Swindon rather than Chippenham. And in reverse, it's get the first train that calls at Swindon out of Paddington, even if that gives you longer at Swindon. And if you'r on a train that calls at Chippenham from London, change there rather than Swindon; that way you're just a shorter taxi ride from your final target.
Simples