I may be on the right track... I finally figured out the syntax for the section attribute and started adding this to all of my application layer function definitions:
__attribute__ ((section(".far_rom")))
What was a ROM overflow of over 11k bytes is down to just over 7k bytes.
Why doesn't the linker automatically fill the near ROM first and then begin filling the far ROM?