I believe there are algorithms for minimizing a DFA once it has been constructed. This may not solve your problem of having to construct gigantic DFAs to begin with, but it may help.