So that would work for the server implementation, however that would not be passed back to the client as the protocol has place to put that data (unless you create a new message type like ReadHoldingRegisterWithStartCountRequest). As for the client, this would currently be a little gross to implement as you would have to do one of the following:
1. pass the request into the client decoder factory and then into the decode method of the response (which is a very large breaking change)
2. add logic on the common.py mixin (or some decorator on top of it) to take the response, check if it is the correct response and not an error, and add to the response the data you want from the request.
The quickest way I can think of getting this functionality for you is to monkey patch the execute on the client and have it store the request like:
response.request = request
# can get start address like: response.request.start_addr
return response
Let me know if you have any other ideas or if this isn't sufficient.