First, before diving and refactoring the application, you must determine if this is really a problem for you. Run some tests (gatling excellent) and do some profiles with something like JProfiler. If you can live with the current performance, then happy days.
Ideal is to use a jet driver that will return you to the future, which will then be sent back to your controller. Unfortunately, async is still an open ticket for the spot . Interaction with the REST API can be made reactive using the PlayWS library, but if you need to go through the library provided by a third party, then you are stuck.
So, assuming that none of these options is feasible, and that you need to improve performance, the question is, what is the use for Play offered? I think they get here, which is useful to split the threads into those that are blocked and those that can use asynchronous methods.
If, for example, only some of your requests are long and blocked, then using one thread pool you run the risk of using all threads for blocking operations. Then your controller will not be able to process any new requests, regardless of whether this request should cause a blocking service. If you can allocate enough threads, this will never happen, then no problem.
If, on the other hand, you push your limit on threads, then using two pools, you can quickly and quickly execute fast, non-blocking requests. You will have one pool service request in your controller and a call to services that return futures. Some of these futures actually did the work using a separate thread pool, but only for blocking operations. If any part of your application can be made reactive, then your controller can take advantage of this by isolating the controller from blocking operations.