Adaptive Fault-Tolerant Scheduling in Heterogeneous Real-Time Systems