Resilient Routing Layers and P-Cycles: Tradeoffs in Network Fault Tolerance