As noted in #535 (comment), the pieces of code where we extract and/or iterate over and/or separate "item"s from "crs"es in kernels that support item crs have been duplicated several times. I struggled to abstract this initially because I wasn't sure which patterns would get repeated. When we have implemented most functions we should circle back to remove duplicated patterns (and bcakport any abstractions or helpers that were invented along the way to previous changes!).
This is particularly useful for implementing raster functions, which will need to iterate over both the geometry and the crs.