Coming from a system admin background you could look into self healing networks and algorithms for effective concurrecy, redundancy and scalability.
Maybe look into some protocol/system independent way to setup a network that can self-reconfigure on failure.
For example, if a mail server dies, then due to it's configuration being redundantly backup to all nodes in real-time (regardless of it being a mail-server, this could be filesystem level) then the network can negotiate the best system to redeploy the mail server on.
Algorithms and setups for this will cover alot of difficult subjects such as graph traversal (weighted by performance latency for redeployment), concurrent state, clustering (and issues like split-brain) and tons more.
An application/os/system agnostic approach might be interesting.
You might find alot of the algorithms and setups used in large SAN deployments may help. Translating block-level failure/redundancy and SAN failover into generalized machine state without virtual-machines would be cool. A virtual-machine's state being backed-up is one thing, but often environments run a unified OS and therefore, you don't need all that state.