Are you referring to fare evasion, where for example the train starts at Y, continues through X where the train gets busy and on train ticket checks usually start, before arriving at Z. Fare evasion is a different problem with only an indirect link to the ticketing complexity problem, although sometimes people do get caught out because of the complexity, which is not ‘evasion’ in the moral sense, although legally it may be classed as such.
Or are you referring to a journey where the route from X to Z would normally go via Y and a Y to Z ticket is more expensive than an X to Z ticket. In this case part of the fares reform would be to ensure that these anomalies are removed, if X to Z is artificially low then it needs to rise to reflect the typical fares per mile on that route, if Y to Z is high then lower it. These are outlier cases probably affecting a very small percentage of passengers overall, if you have been getting a massively discounted journey for years then tough, its been spotted and you will pay a more realistic price, if the Y to Z journey is excessively priced then that’s price gouging and as a generally subsidised public service should not happen.
I assume all tickets and routes are in a database these days, so writing queries to weed out the oddities shouldn’t be difficult, they can then be resolved. Couple that with a review of the routing guide to remove oddball routes that serve no purpose for normal passengers and only serve those ‘in the know’.
In general I would assign each segment (i.e. between two junction points or a junction and terminus) of route a pence per mile rate, and apply that to all journeys over that segment, with an offpeak discount where needed. Where multiple routes exist take the fastest, as you assume that is the route most people will choose. Advance tickets are a different case and can be demand priced to try and even flows and ensure less popular services are used where the travel is price rather than time sensitive. To take your X via Y to Z case X to Y + Y to Z would be the same fares as X to Z for all tickets types, i.e Anytime single, Offpeak and Advance. If advances are not available over part of the route, then the advance fare applies to the segments that have them and you pay the appropriate single fare for the remainder (This would probably mostly apply where your main leg is a busy inter city route and the start and/or finish is over a branch line). A simple set of rules which would ensure that some of the current issues are removed.
The next step is then to look at fares on all routes and decide if they are about right, too low or too high and offpeak/anytime times and discount are appropriate. I could even envisage routes where there would be no peak/offpeak difference, probably rural routes with a sparse service. Then make adjustments where needed, maybe to encourage use, or level out demand. Make these changes gradually.
There is still nothing to stop you from having specific promotions on routes, if you do then people buying tickets from outside the promotion route would still benefit as that segment would be cheaper, and advance tickets can include promotions like the £1 tickets that have been available in the past
I am basing this on the premise that the railways will always attract a government subsidy on routes that would otherwise be uneconomic, so in a lot of cases fares will not cover operating costs.