Eliminating Single Points of Failure in Software-Based Redundancy