Don't have time to soak the beans overnight?
Put them in a 4-quart saucepan. Add enough cold water to cover by 2 inches and bring just to a boil. Remove from the heat and soak for 2 hours. Drain the beans and continue with the recipe.
Sort through the beans to make sure there are no little stones and then put them in a large bowl or pot. Add enough cold water to cover the beans by 2 inches and let soak overnight. Drain the beans well, tilting the colander instead of shaking it to gently extract the water and protect the beans' skins.
Position a rack in the center of the oven and heat the oven to 300°F.
Melt the butter in a 5- to 6-quart Dutch oven over medium heat. Add the onion and garlic and cook, stirring occasionally, until softened, 5 to 7 minutes.
Add the chile powders, cumin, allspice, and 1/2 tsp. pepper. Cook, stirring, until aromatic, about 30 seconds. Add the broth and ham hock. Stir to combine. Add the beans and bring just to a simmer. Cover and bake until the beans are easy to bite into but still a little mealy in texture, 45 to 60 minutes.
Stir in the coffee, molasses, ketchup, Worcestershire, and oregano. Bake, uncovered, until the beans are fully tender, 30 to 60 minutes more. Cool to room temperature. Discard the oregano stems and the skin from the ham hock. Cut the meat off the bone and chop. Add the meat to the beans and discard the bone. Cover and refrigerate overnight.
To finish, bring to a simmer, uncovered, over medium heat. Reduce the heat to low and continue to simmer until the sauce is reduced to the consistency of thin gravy, stirring occasionally so the bottom doesn't burn, 40 to 60 minutes. Stir in the bourbon (if using) and season the beans to taste with salt and pepper.