I think that SlingModels, which only adapt from a Resource, are much more versatile than SlingModels which can only be adapted from a request. Because the adaption works in nearly every case, and not just in the context of a request. It also makes testing much easier.
You can "simulate" a request from javacode, see  for an example. It should also work in the context of your IntegrationTests.
Using the requestResponseFactory in conjunction with the request processor is definitely what I would like to do to. The issue is from that approach is that I seem unable to adapt the request to my model afterwards.