Ooo. I wasn't aware of that option. (Learn something new every day!)
Setting enable_seqscan=off takes one of the shorter queries I was working with from about 3 minutes to 300ms. This is a comparable performance improvement to where I put a materialized view (with indexes) on top of the materialized views instead of using a simple view on top of the materialized views. I'll have to try it with the query that takes 12 hours.
I built a test case, but can't get it to reproduce what I'm seeing on my production database (it keeps choosing the indexes). I'm still fiddling with that test case so I can easily share it. I'm also back to trying to figure out what is different between my laptop database and the test case I built and the real world query with the real data, and pondering the worst query itself to see if some sort of re-write will help.