Tear the bread into bite-sized pieces. Place them in a bowl and add enough salted water to cover. Let it stand at room temperature for a couple of hours.
While the bread soaks, thinly slice the onions or leeks and heat them gently in a large skillet over medium heat with 1/3 cup of the olive oil, stirring occasionally, until softened and golden, 30 minutes or so.
Meanwhile, roughly chop the tomatoes, toss them in a large, roomy pot over medium heat with the rest of the olive oil and the garlic, and let them cook down until they're about half the original volume.
Crush the peppercorns and coriander seeds in a mortar and add them to the tomatoes in the pot along with the oregano. Push the tomatoes through a strainer and return them to the pot.
Then use your hands to squeeze the bread dry. Stir the soaked, squeezed-out bread, and 4 cups cold water to the tomatoes in the pot. Let it bubble up and cook gently for another 20 minutes, then stir in the onion or leeks and their cooking oil along with the shrimp, the sliced chouriço, if using, and the anchovies, if using (the anchovies really accentuate the seafood flavor)
Cook the soup for another 20 minutes, until the bread is perfectly amalgamated into—you know, melded with—the broth. Stir in a pat of butter, if desired, and finish with a liberal scattering of fresh chopped cilantro.