Put the chicken, onions, and red pepper in a large stockpot. (Mine is 16 quarts.) Rinse the garlic heads in cold water, then peel off the papery skin. Break the garlic head into individual cloves. Rinse and cut the roots off the cilantro. Cut a piece of cheesecloth the size of a kitchen towel. Put the garlic cloves, peppercorns, bay leaves, achiote seeds and cilantro on the cheesecloth, bring the ends together to make a little pouch, and tie the loosely with kitchen twine. Give the pouch a couple of good whacks with your kitchen mallet, and add it to the pot.
Add enough cold water to cover the chicken by at least 2 to 3 inches. Drop in the ham hock, if using. Bring to a boil over medium-high heat, skimming foam off of the top as it forms. When the water comes to a boil, adjust the heat so the broth cooks at a steady, but not rolling boil. Cook for 30 minutes.
Check to make sure the breasts are cooked through, then remove them from the pan. Cook 15 minutes more, then remove the legs and thighs. Set the chicken aside to make another chicken dish. (If you're using backs, necks, wings, etc., you don't have to remove anything.) Leave the backs, necks and wings in to further flavor the broth.
Cook for 1 hour. Set a strainer over a large bowl and line the strainer with a couple of layers of cheesecloth. Carefully strain the broth through the cheesecloth. (Ladling it is the easiest and safest way.) Add salt, to taste, and let cool before refrigerating.