Oh ok, after some more thoughts I think the slow way is the better one. And such a lookup table shouldn't require too much more additional time...
lookup_table: ;256byte aligned
db x,x,x,x,x,x,x,x,x,x,x,x,x,x
;a=bank (0-14)
LD (patch+1),a
patch:
LD a,(lookup_table)
;a=first 16K block