Well, you could use a movlw (value) followed by a movwf STATUS to set all the bank bits with 2 instructions, but you'll also overwrite other status bits you might not want to lose.
My macro is called like banksel but is called selbank, and it assembles only the instructions needed based on the last bank selected, so it's more efficient than the one provided by Microchip.
If there's a chance that the bank bits won't match what the macro thinks they are (such as after a branched-to section of code) I have a fselbank macro that sets all the bits (2 instructions) and updates the macro variables so that subsequent selbanks work properly. Also, if I'm only using banks 0 and 1 on a chip with 4 banks, I can define a value that tells the macro to not add instructions for setting the second bit, allowing for 1-instruction bank setting.
Another cool macro I created is movlbw(1-6). Actually, 6 macros but the only difference is the number of arguments accepted. Each argument is a bit value like those used in bsf, bcf, btfss, btfsc etc. They are logically ORed together by the macro and used to build a literal that is then moved into W with a movlw instruction. This is handy for setting bit-oriented status registers using the bit names without having to use a bunch of bcf and bsf instructions. Instead you call the appropriate movlbw macro, then movwf the end result to the register.
IMHO, Microchip should have put all the registers relevant to a particular function in the same bank. For example, PORT and TRIS registers should have been put in the same bank; all the A/D registers in the same bank, etc.