To finish up this thread: I unchecked 'Use behavioral HDL' in all the delays and counters (which also wanted to combine in bad ways). At least I unchecked it in any instances that weren't already assigned to a pblock. At least once, I still saw a delay with behavioral HDL turned off combine with another delay, but the timing errors have mostly gone away.
Thanks for the help guys! Matt