Your thoughts in the OP are pretty much in line. I have been providing a turn key arch-arm satellite image for years. I thought about doing what you are trying making kernel packages but I did not want to get in the habit of keeping all of the kernels current for every one so I provided instructions in my git that basically followed RPi's kernel compile guide.
As long as you have these kernel names
kernel7.img / kernel7l.img / kernel8.img in boot it knows what kernel to boot automatically. The only difference as you mentioned is have
arm_64bit=1 in config.txt and it will know to boot kernel8.img.
If your kernel is compiled like RPi does you do not need an initramfs. I do not have one in my image. Seems like a few months back I installed the arch aarch64 to test something and I had to build an initramfs image with 1 module in it so it would boot off my usb ssd. I never tested with booting off a sdcard.
My thoughts when I was thinking about building kernel packages:
As mentioned above set the
arch=('any') in the PKGBUILD for each kernel
Build 3 separate kernels to boot depending on device and architecture.
32bit - kernel7.img / kernel7l.img and
64 bit - kernel8.img.Make sure the kernels built wind up in /boot with their respective names for the devices and architecture they are built for.
For informational purposes my kernel modules tree's. I need to upgrade a couple of them but have not taking the time to do so:
$this->bbcode_second_pass_code('', '[alarm@alarmpi ~]$ ls /usr/lib/modules
5.10.60-udlv7+ 5.10.60-udlv7l+ 5.15.30-2-udlv8')
Modify the PKGBUILD so nothing touches the other kernels. I had thought I might exclude at the time and build the overlays and all .dtb's as a separate package and have the kernel's PKGBUILD depend on it since they are the same anyway when building the kernels.
As you mentioned all of the pi devices are downward compatible so have the armv7 32bit image as as a base.
The 64bit kernel seems to boot and work ok here on the 32bit image on the tests I have done. I have not done a really intense test as I have another means of providing a 64bit images and my special FTA kernel but I am thinking if it is good enough for the RPi people to release their images with it it is probably ok but I personally would not boot a 64bit kernel on a 32bit OS. I don't see an advantage.
Here is a pic of my 32bit arch-arm image booted on my 64bit kernel I threw on my image today:
https://drive.google.com/file/d/19DNYr2bcUPnXoE69k3ANDGhTY9RyMc65/view?usp=sharing