Have the primaries the same day as a regularly-scheduled election. My town switched its local and school elections to coincide with a state-wide one since piggy-backing on an already existing process is a lot cheaper than running a special election. That's why California has its primaries so late - we tried doing it earlier, it cost a lot (18 million registered voters in the state!) and didn't give us any leverage anyway. Since we almost always have something to vote on in June, we just use the infrastructure already in place.
A caucus would not be feasible in high-population areas. First you have to find a place big enough to hold the highest expected number of people turning out, and space isn't cheap in places like Silicon Valley (high voter turnout in this past election - ~83%, so we take our civic duties kinda seriiously). Then you have to make sure people can get there. If you hold the caucus on a Saturday or Sunday there will be people who can't attend for religious reasons. If you hold it during a weekday, good luck getting people there: in the Bay Area traffic is such that you don't go anywhere before 9:30 AM or after 3 PM unless you have to. So no matter when you hold a caucus you'll be disenfranchising some percentage of voters who can't make it to one location.
Primaries are the way to go, and if it turns out that a lot of states have them at the same time so the media has problems covering them, that's not democracy's problem.