Group the exceptions into several groups by creating one top level exception per group, and then create subclasses.
These are the examples of some exceptions: BusinessException, a subclass ValidationException, FatalException, etc. For each group of exceptions define a global catch mechanism using a @ControllerAdvice annotatted class, that configures exception handlers for all controllers.
See this blog post for an example of how to create a ControllerAdvice class.
Then in the service layer its possible to catch the exception and do something specific if needed, and then rethrow the exception add still trigger the remote behaviour.