Hi Jeremy,
The responsibility of bootloader is to parse addresses and data from S19 file then program them into flash, it's none of bussiness with applicaiton. Generally speaking, S19 file will include those nonvolatile registers' content and interrupt vectors. The thing you do is to get those data followed by programing them to flash.
Regarding your questiones , let me clarify something for you.
1. vector redirection.
It's strongly recommended that in bootloader, don't use any interrupt, use polling to replace. and bootloader should be protected to prevent from rewriting by accident. In this case, FNORED should be cleared to enable vector redirection, so that application can use vector table as common.
2. reset vector.(0xfffe-0xffff)
If bootloader is protected, the reset vector can't be modified any more. bootloader only updates those flash area for application but keep its own area no change.
In fact, it can't be changed if it is protected.
3. like point 2. the default vector will be protected too. bootloader needn't to write this area. vector table of applications is below protected area. bootloader should update that vector table.
hope these info can help you. Any doubt let me know easily.
B.R
Weiping.