The A/B partitioning is very common and I would argue, it is the simplest way if you want you OTA Update to be safe in regards of any errors (user unplugging etc.) that may happen during write / switching to new software. If you can spare the extra partitions on your NAND, my advice would be to do it exactly that way, and use a common tool for that (i.e. swupate, rauc, ... ).
We don't have OTA update for RO kernel and rootfs yet, I'll take the advice for running OTA A/B partitioning when the requirement is coming.