If I perform a number of camera calibration routines at a fixed resolution, with various sizes of calibration patterns (like checkerboards), at various distances and get various values for focal lengths, could I just average them out? Would this just give a more "robust" focal length? Is it a good idea?
No, it is not a good idea. Typically, you want to limit the volume of space relative to the camera in which you want to do your measurements, and you want to use a single calibration target appropriate for that volume. In theory, you can calibrate with any number of different patterns. In practice, however, most implementations assume that the pattern is the same in all calibration images.
In any case, if you insist on using multiple patterns, you still want to jointly optimize the parameters, not just to average them after the fact. And you would most likely have to implement that yourself.
I do all my camera calibratins with a SpyderLenscal. You have to take the biggest focal length and the lowest aperture value. This is how you get the smallest depth of field.
The distance between camera and your pattern should be the one you usually use with this specific lens.
Here you'll find a video tutorial: https://www.youtube.com/watch?v=k2zlLIDfVgc
I think the trivial idea on multiple calibrations is to take the one with the minimum reprojection error. Otherwise, if you want to refine your calibrations over several sessions, then I would benefit from Ankur Datta's approach, where multiple calibrations on the same dataset is performed and the accuracy is iteratively refined. Here is a reference implementation.