/* allocates a list of PDAs, locking the free list only once when we
* have to call calloc, we do it one component at a time to simplify
* the process of freeing the list at program shutdown. This should
* not be much of a performance hit, because it should be very
* infrequently executed. */