Ad 1) You can definitely add packages to the ROS2 without rebuilding the whole thing - It usually done with ros workspace - this means that you build all core ROS2 libraries and place it in the system, and then you create new workspace with your application code and any new packages you want to use. Then all you have to do is to build your workspace (your code + non-standard packages you desire to use)
Ad 2) This may be tricky, you can check how ros2 debs for x86 are built and try to mimic the process. However, if you are frequently flashing new boards, or reflashing the same one from the ground up, you may try whole system backup. Build ROS2 as usual, install all packages you want and create whole-disk backup with dd
on your PC ( this can be done with SSH ). Then you can just boot your board using clonezilla or any other live-system, and dd
the image from your PC to the board.
This is a byte-to-byte, whole disk copy so you end up with the exact same system as you had on the 'donor' board, including all packages, programs, partitions, groups, users, permissions, files etc. The disadvantage is the size (image is same size as the whole disk, no matter how much data was on it), and copying times may be long. This can be addressed with gzip, but I've not done this myself.