I also use Finamp for audio streaming (or local, downloaded playback). It's a good app, but still lacking a lot of features other audio players have, like rearranging the play queue. I'd suggest also trying [Gelli](https://github.com/dkanada/gelli), which seems to be a more mature app for music playback.
Funkwhale is awesome, but it's also one of those FOSS projects whose website doesn't exactly illustrate what it exactly is or what it's exactly for, so here's a direct link to straightforward answers for both of those questions
I want to say +1 for funkwhale, but I didn't get it to work with the subsonic client and haven't found yet a way to download/cache songs from my library on the phone. Have you figured this out?
Another comment not from GP, but I'd recommend Polaris. It's very light (unlike Airsonic), FOSS all the way, and has a functional web client (again unlike Subsonic). Can't recommend it enough
I have close to 3 tb of music, storing it all offsite is prohibitively expensive at the hundreds of dollars per month level, so that service is not good for me.
I tried out Jellyfin for music, but it kept messing up my music tagging. I switched to Navidrome last year. It works with all subsonic clients and has a great web UI.
bonob acts as a media libary bridge so sonos can use navidrome as a media library (instead of having to use a janky old version of smb auth that sonos requires)