This recipe makes several dozen tamales, but don't be surprised when they disappear quickly.
For the pork: Bring pork, water, onion, garlic, cilantro, and salt to a boil in a large saucepan. Reduce heat, and simmer for 35 minutes. Let cool. Strain, reserving broth and pork separately and discarding onion, garlic, and cilantro.
For the sauce: Preheat broiler. Place tomatoes, cut sides down, on a rimmed baking sheet. Broil, flipping occasionally, until soft and charred, about 10 minutes.
Heat a large skillet over medium-high heat. Add dried chiles; press gently with a spatula and toss occasionally until soft and fragrant, about 2 minutes. Remove from heat, and add enough hot water to cover chiles. Let soak for 10 minutes. Drain, and puree chiles in a blender or a food processor until smooth. Add tomatoes, 1/2 cup of the reserved pork broth, the chipotles, onion, garlic, and cilantro, and puree until smooth.
Heat lard or shortening in a large skillet over medium-high heat. Add tomato-chile mixture, and cook until slightly thick, 5 to 7 minutes. Season with salt and pepper. Add pork and 1/2 cup of the remaining pork broth, and simmer, stirring occasionally, until sauce is thick and pork is tender, about 15 minutes.
For the batter: Combine masa harina and hot water, and stir until mixture forms a paste. Let cool.
Heat 1 cup of the remaining pork broth until warm. Beat lard, baking powder, and salt with a mixer on high speed until fluffy, about 2 minutes. Reduce speed to low, add 1 cup masa harina mixture and 1/3 cup warm pork broth, and beat until combined. Beat in remaining masa harina and 2/3 cup of the remaining pork broth. Raise speed to medium, and beat until smooth and fluffy, about 3 minutes. (Batter should be soft but still hold its shape in a spoon.) Refrigerate for at least 1 hour (or up to 2 days).
Meanwhile, place cornhusks in a large bowl, and cover with water by about 2 inches. Place an inverted plate on top to keep the husks submerged. Let soak, turning and separating them occasionally, for at least 1 hour or until you are ready to assemble the tamales.
To assemble: Remove 3 husks from water, and dry with paper towels. Tear husks to make a total of 90 thin strips.
Remove another husk from water, place on a work surface, and dry. Scoop 2 tablespoons tamale batter over center of husk. Spread into a 4-inch square, leaving a 2-inch border on straight end and a 1/2-inch border on sides. Spoon 1 1/2 teaspoons pork filling along center of batter. Fold 2 long sides of the husk in to meet in center. Tuck 1 inch of the pointed end up, and tie loosely with a strip of husk. Do not tuck opposite end, but tie it shut with another strip. Repeat, keeping finished tamales covered with damp paper towels as you work. (Tamales can be prepared up to this point 1 day in advance. Cover with damp paper towels, and refrigerate.)
Add enough water to a large pot to come about 3 inches up sides. Bring to a simmer. Set a large metal colander in pot (it should rest above water). Place tamales vertically in colander, leaning them against one another. Cover pot, and cook until batter pulls away from sides (you will need to remove a tamale carefully and open it to check), about 1 1/2 hours, adding more water to pot as needed. Serve tamales with salsa and crema. Leftover tamales can be wrapped in plastic or sealed in a container and frozen for up to a month; you do not need to let them thaw before steaming.