Fixes StackOverflowError in `RegionUtils.subtract`

There are two problems in the underlying method `subtractImpl`:

- It calls the API method `subtract`, which is an unnecessary
  performance cost because `subtract` checks its input parameters
- It is not tail recursive

Fixes #1002361

------
Needs to be backported to 4.x