So, I did some research. I’m pretty sure that my problem has been that my dough isn’t wet enough — the hydration ratio is too low, in technical terms. A wet, sticky dough is harder to work with but the results are those elusive holes.
First, I mixed up a dough that was 77% hydrated (ration of 77% water to the flour). To keep the math simple, I used 1000 g of flour (a mix of stone-milled local flour, rye flour, and bread flour) and 770 grams of water. I weigh everything — measuring cups aren’t very accurate for this as different flours weigh different amounts and I need to be precise. I mixed them together and then let it sit for 45 minutes. That rest allows the gluten to start forming, which gives the dough its stretchy quality.
After 45 minutes, I added 150 g of sourdough starter and 20 grams of salt. I also added about a tablespoon of malt syrup to add flavor and color. For the first two hours, I stretched and folded the dough every 30 minutes. This dough is way too wet and sticky to knead. I baked one loaf that afternoon and the other the next morning, after it had spent the night in the refrigerator. Success!
The second two loaves were simply bread flour == no fancy addition of other flours for taste or texture. It also came out beautifully. We ate all the bread over the Christmas holiday; not a crumb is left. And, each time I cut into a loaf, I danced a jig and gave a major fist pump.