Your points 1 and 3 are one reason why it would be difficult to eliminate split-ticketing without making every ticket booked-train(s)-only. Fourbee's suggestion of buying an off-peak ticket and excessing it on-board sounds like it might point the direction to a solution however. You make every ticket issued an 'off-peak' and have on-train revenue-protection staff check everyone has a ticket, issuing those with no ticket with a penalty (or, prefrablly, just selling them a ticket) and (on peak services) selling a 'peak-top-up' ticket valid on the current train until the station you are alighting or when the train becomes off-peak, whichever is sooner. A few obvious problems with this:
- The revenue protection staff have to make sure to check everyone's tickets after every stop, to catch those who have just boarded and charge them the peak fare. This could be difficult on a long train or when there's not much time between stops
- This being a peak-service, there may be standees (though on INTERCITY services, I think the railway should aim to have nobody standing even in the peaks), making it difficult/impossible for the revenue protection staff to move through the train
On the plus side, we wouldn't need that horrible invention the ticket barrier on stations anymore.
Point 2 isn't a peak-related issue, to solve that you'd need to change the definition of 'day return' to mean 'valid for 24hrs from start time printed on ticket' rather than 'valid until the end of the (railway) day'.