It's not completely clear to me what the issue is now.
Remember that if you move the code to the .h file then it will be in the same translation unit since the #include in the sketch essentially just inserts the contents of the .h file. That's not typically considered best practices but it does allow some things that would not otherwise be possible.
Ethernet, Ethernet2, UIPEthernet all use the Client class. So if you write your library so that the Client object is created by the user in the sketch and then passed to the library via a function then the library will not be dependent on any specific library. That will allow your library to be also used with any other library that uses the Client class, such as WiFi, ESP8266WiFi, EspWiFi, etc.