One point worth emphasizing is that leader election solves who should act, while fencing tokens enforce who is allowed to commit changes. That separation makes distributed systems much more resilient because correctness is enforced at the write boundary rather than relying on every node to behave perfectly.