The problem I've had with Term rewriting macros is that they can only be used a certain number of times before it is ignored. So any code that contains more than a few of these simplifications will only be partially simplified (ex: up to line 20 and not below that). But your point about it not recognizing hidden occurrences is good so it wouldn't have been a viable solution either way.
Will take a look at DaCe and see if I can understand enough to implement it myself :D thank you!