That is basically what I did. Librespot already reverse engineered the spotify client but mainly for playback. I extended my fork to include internal endpoints. These are spclient (extended-metadata, playlist and rootlist, collection, connect-state, lyrics, radio) and Pathfinder GraphQL for search. It doesnt call the public web API (api.spotify.com) anymore so doesnt suffer from those API rate limits.
I looked at lossless too, that is probably possible, but im not going to implement it. It uses a different key system called PlayPlay. If I manage to implement it, it would be considered DRM circumvention and I dont really want to mess with that tbh