You could (theoretically) implement a new "board" called something like "UNOw9bitUART"; and have it's core be in a user directory. Users would install your expansion similar to the way they install Arduino Tiny or Sanguino support, and the core would live in something like ~/Arduino/hardware/UNOw9bitUART/avr/cores/* (I think you would have to maintain a parallel set of the rest of the core as well. I haven't seen an obvious way to "replace this one core file and use the standard core for everything else." Perhaps in 1.5.x it will be possible.