As far as I understand this would be the steps required:
compile boot loader, don't link
No, compile rBoot and link it as normal. Why wouldn't you link it?
compile sources, link
Yes, build your app as normal.
use esptool to convert elf files to two firmware files iram, irom
No, use esptool2 to produce a single app rom image (which contains all app parts).
create composite firmware file from iram, pad to 64k, then append boot loader+pad, config sector+pad, irom
If you want to put this into a single file you start with rBoot.bin, pad it to 4k (with 0xff), then either append a custom rBoot config padded to 4k or just append another 4k of blanks (0xff), then append the image produced above. This can then be flashed to 0x0000 and will install rBoot, the optional config (or a blank one that will be overwritten on first boot) and the actual app.
I was assuming that means you can't use the first 64 kbytes (0x10000) for irom and you need to pad over them in this way.
Don't know where you got this 64k from. The built in rom loader needs the iram/dram segments first (these are copied to actual ram) followed by the irom segment which is read directly from rom when used. So long as the order is correct it doesn't matter where the irom segment starts, so long as you set the address in the linker file appropriately. With rBoot (and the sdk loader) the irom segment is first so that it can have a known start point and no gap between it and the ram segments. If the ram segments were first you have to pad to have a known address for the rom segment. Only the first 8k are used for rBoot and the rom can follow straight after. In theory rBoot and config would fit fine in one 4k sector but it's not a good idea to erase and rewrite the bootloader sector every time you want to rewrite the config, for obvious reasons. The rom starts at 0x02000, but it contains a header before the actual code which is why the rom address is +0x10.