Daniel, the folks in this thread have given you all the information for a temporary fix.
It doesn't matter if you have 40 or 100 constructors. The performance bug manifests when you use tuple patterns
like this. There is no situation when you
must use a tuple in a case. You can always break that into nested cases. Yosuke demonstrated going from 3-tuples to 2-tuples.
As for the Bool bug, again, you can break it into a nested if expression.
There are many folks here who can demonstrate how to do both of these things. Please ask on #elm-dev
on slack if you need help with either idea.
It would be great if the fix could just be released, but it is tied in with the new parser, which has breaking changes. That means a 0.18.1 is not possible without doing very serious surgery on the existing code to extract the new parser. I would want at least a week of community testing before releasing something like that. So as Richard already said, this is very time consuming to do well. A compiler is not like an npm library. For your case, I should "just do it" but for the rest of the community, I cannot justify spending a week on a risky release for a bug with many known workarounds.
So the fix will be out with 0.19. If you make some temporary changes described by multiple posters here, you should be able to bring the compile times down significantly with 0.18, not even needing the preview.