There are a couple of misunderstandings in this code.
First, the copy from ROM to RAM is done by the C startup code mainly for initialized variables, not for code. While it is possible to use this for code too (it is used for XGATE code for example), C code is not handled this way. Also for variables copied by the startup code the relocation offset is computed by the linker, not explicitly given in the prm.
Second the RELOCATE_TO directive is used to place relocatable code at the different address in flash than references to it resolve too. When writing PIC (position independent code) it is not necessary as PIC means there are no absolute references, hence nothing to adapt. Also the relocated too address range, to which the code gets copied at runtime, must have at least the size of the relocated buffer. Here the BOOT_MEM area is 0xA00 bytes, but there are not 0xA00 RAM bytes after 0x3980 (just 0x680 up to 0x4000). So this BOOT_MEM segment seems problematic.
Also the PLACEMENT maps (relocatable) sections to segments, but BootStart in the assembly code is a label, not a relocatable section. Sections and assembly labels have their own namespace and do not interfere with each other, so in the shown code the two uses of BootStart do not refer to the same entity.
Sections in assembly are defined with the section directive (BootStart: SECTION), this is different from the used ORG directive which defines the allocation of the code here. Also that the address used in the ORG directive matches to the one used in the BOOT_MEM segment is only considered for error checking (memory overlaps...) it does not affect the outcome of how the ORG sections content gets treated.
About the booloader setup, typically a bootloader is used to flash an application, not to flash itself. As flash needs to be first erased and then programmed there is always a time window when the flash does not contain a valid image and therefore any spike could render the device non bootable (without bdm). Therefore the safe setup is to separate the bootloader from the main application and to only update the application in the filed, while keeping the bootloader itself in a protected area, say never erasing it. Reprogram the bootloader itself should generally not be necessary if the bootloader is used for booting only, and not part of the user application.