No you do not always need to add a LAYER of software. Most of the time it is just a case of generating code that looks horrible to YOU.
On a PIC you can insert RAM page select instructions in front of all instructions if you wish *** OR *** you can analyse your code and only insert them where you NEED them. This may not be "nice" because it involves extra work for you. But if you do the job properly you end up with a VERY LOW page select overhead, much lower than if each instruction actually carried the extra bits required.
The trick is to use a high level language or sophisticated assembler that will do this work for you. This is not adding a layer of software.
Regards Sergio Masci