Firstly, the incident happened as the train was leaving a siding passing a shunt signal. These provide less authorisation than a normal signal does, even when they are not at danger (the train can permit as far as the line is clear or the next signal, there is no guarantee the track ahead is clear).
Now, in the UK, there are four train protection systems: AWS, TPWS, ATP, and ETCS. However, these are all primarily designed for trains on normal running lines, rather than those on sidings. I'll examine each of these in turn insofar as they protect signals:
The Automatic Warning System (AWS) is a simplistic system using magnets/electromagnets to signal an alarm to the train driver which must be acknowledged within 3–4 seconds or an emergency brake application is initiated, which per the rulebook they may not override. (It can be overridden through use of an isolating switch/cock, but without someone else in the cab one would be breaking the rules by leaving their seat to override it—regulations forbid the switch from being anywhere they can reach.)
Magnets are positioned 150–250m away from the signal, to give the driver a chance to view the signal before acknowledging it. In the case of a siding, it is assumed that the train will be parked there for some duration of time, and given sidings are normally roughly the same length as the trains that typically park in them, the train would not pass over a magnet if one were installed when leaving the siding. As a result, magnets are not installed for sidings.
The Train Protection & Warning System (TPWS) is a comparatively modern system, dating from the 90s, which causes an emergency brake application when a train passes a signal at danger or when approaching a signal above a set speed (designed to bring any train to a stop within the "safe overrun distance", i.e., prior to any junction on the track). It was designed to be a cheaper to rollout solution than ATP (below), while stopping the majority of accidents ATP would stop.
In principle, it could be used to protect sidings, as given the typically low speed limit in sidings, one would typically be able to have only the loop at the signal, as the stopping distance would be short. It's largely not been used to protect sidings, likely because such incidents are rare, leading the cost/benefit to conclude it's not worthwhile.
Automatic Train Protection (ATP) is really a group of systems, two of which were installed in the UK as part of trials before a proposed national rollout, which ultimately never happened due to an estimated £1 billion cost. These systems are designed to prevent a train from ever passing a signal at danger.
Essentially, two systems developed elsewhere were installed: the Belgian TBL1 on the Great Western Main Line, including Paddington station; and SELCAB, which was a development of the German LZB, used on the Chiltern Line. Neither TBL1 nor SELCAB (nor LZB) has ever been used to protect sidings. (LZB especially is very expensive to install, as it requires a continuous wire along the track.)
However, trains operating on these lines are not required to have the systems installed (at least trains fitted with the equipment that run on the Great Western Main Line are required to be taken out of service if the system fails), and the train that derailed was not equipped with it (though obviously given the sidings not being equipped this isn't a cause).
The European Train Control System is a system that is starting to be rolled out in the UK, currently only active on the Cambrian Line which was used as an experimental implementation. There's plenty written about this, but because it's not (yet) installed on the GWML I'm not going to discuss it here.
A number of other mechanisms exist to protect the line. Traditional ones are catch points (where you have points to direct a train away from other lines that may be occupied, typically with some short section of track beyond) and derailers (designed to immediately derail a train, primarily used around places like depots where movement speeds are low).
In this case, the train passed over catch points which were set to protect the mainline. While derailing a train causes disruption, had it run into a busy commuter train the outcome could've been a disaster.
The other options you mentioned are train stops and diverting the train into a sand trap. Train stops are pretty much not used on mainline rail systems because the mechanical parts limit the possible speed of they can be used at limiting their use to low-speed track like sidings and depots, where incidents are relatively rare. A sand trap is essentially something you can put following catch points (and is something often used, or a sand bank) but this requires space for it, which in a congested area near to a station is unlikely to exist.
Ultimately, a lot of this comes down to cost/benefit of various solutions, and the fact that catch points have frequently been installed in such locations for over a century, and do avoid crashes in the rare cases when the signal is passed at danger. If somewhere frequently had signals passed at danger ("frequently" by railway standards, that is!), I would expect another approach to be used.