1. Use TAI-UT1 (International Atomic Time, monotonic, no leap seconds, with zero on 1958 Jan 1) for time keeping
2. Define conversion functions that map TAI-UT1 to/from UTC/UT1/etc
Use TAI-UT1 when you want to:
- synchronize the clocks of a network of computers
- calculate time elapsed
Convert to UTC/UT1/etc when you want to:
- Display a human readable date
- You're writing navigation or astronomy software
Introducing leap seconds into UTC would then just mean updating the TAI<->UTC mapping function. So all it would affect is how human-readable dates are displayed & navigation/astronomy software is re-aligned to celestial body positions.