If we're solutioneering, let's run through the hazard control hierarchy from the railway's point of view. The principle is that the
Elimination - in the case of bridge strikes, this means getting rid of the bridge entirely. In most cases, this will be totally unacceptable.
Substitution - replace the bridge with something that's less susceptible to being struck. Usually, this will be a bridge with more clearance, which is clearly going to be expensive. Ironically, substituting level crossings for bridges has improved safety overall, but increases this hazard.
Engineering controls - The goal here isn't to eliminate the bridge as something which can be struck, but rather to keep the high vehicles away from it. Protective bars ahead of the bridge will come into this category, as will some kind of computerised bridge detection and vehicle stop system.
Administrative controls - At this point, you're trying to prevent human error rather than make it impossible for the bridge strike to happen. Educating road users, erecting signs, and so forth. This is the level that we mostly work at, since elimination and substitution are generally impossible and engineering controls often expensive. Given that double decker buses often have issues when driven out-of-service by drivers used to single-deckers, there's probably a potential administrative control here.
Protective equipment - Fitting equipment to the bridge to protect it in the event of a strike. Practically speaking, I'm not sure what that could be. Given the railway's approach to safety, the bridge would still be closed to check that the protective equipment had worked.