Kind of. You can to some extent but it's all hard-coded so it's not convenient to change (you need to do a little dts patch and recompile everything from source) and there are limitations and caveats.
You can define a partition that joins adjacent flash partitions, or use
mtd-concat to join distant partitions. See Can I stack on a second overlayfs from RAM to temporarily install more packages? - #13 by bobafetthotmail
The caveat is that this new partition table (or the use of mtd-concat driver) happens ONLY inside OpenWrt while the bootloader (and stock firmware) are unaware of this. So you can usually commandeer more space for your rootfs partiton, but not change the kernel partition size/space.
That is because the bootloader expects the kernel in the same place and same partition as stock firmware, while the rootfs is a thing that is detected and mounted by the kernel later in the boot process, and OpenWrt kernel will have the altered partition table (and mtd-concat) to do what you want.
For what you want to do, it should theoretically work, since you would be just taking over two rootfs partitions (or whatever that is) while leaving at least one of the original kernel partitions so the bootloader can read and boot your Openwrt kernel
Before you try hacking the source to do this, please see if you can just use the imagebuilder https://openwrt.org/docs/guide-user/additional-software/imagebuilder to make an image with all packages you need. Images created like that will put all packages you selected in the high-compression read-only squashfs partition and that will shrink them significantly so maybe they can just fit as-is.
Note that this is not just a "openwrt limitation", most embedded devices work like this with hardcoded partition table in boot loader and Linux firmware. (Because quite frankly nobody expects the end user to change this).
As you saw above, OpenWrt does have some custom drivers to help people work around it a bit.