You could do a complex calculation field that holds your different variations of text blocks, then merge that field (or fields) onto the layout instead. That would give you a single layout with calcs that update as needed.
Substitute() would probably be what you're after to get started. You can substitute chains of conditions together like this:
Substitute( table::originalText ; [ "is" ; "are" ] ; [ "provide" ; "provides" ] ; [ "etc.." ; "ad nauseum" ] )