I think something like ploi.io or runcloud could work for you. I personally use Runcloud but they appear to be moving slower than ploi "feature wise" although it has worked perfectly for all the sites I manage and their support is fair for the paid price.
Both this services clear your goals from 0 to 4 in one way or another. I also think both has some sort of deployment tool integrated with any git repo (which I don't personally use but i think it's there).
One "downside" is that ploi doesn't have Apache server configuration they went full nginx though I know there's some crew around here running PW with no issues on nginx. Aside from that, they do seem superior feature-wise. For example, there you can have db only servers, load balancers.
The worse part of Runcloud in my opinion is it's per-site backup service which is a service provided by them, Ploi lets you use your own storage (s3 for example).
One thing both services have is cloning one "app" into another one, or another server, at least I can confirm this on Runcloud, but seems to exist in ploi too and it's super handful.
Another way I do this is through CI services (like Github Actions) and basically doing some shell scripting which is not too bad for all the time saved. In the Github Actions I basically rsync template files/modules and run the migrations module through it's CLI but I rarely push actual content since it's managed by a third party.
While on development, I do still use plain old cli mysql import, scp the things or run ngrok to save the hassle of doing previous steps if I just want to quickly demo sth, but tbh it's just lazy on my part I bet it can be easily automated.
EDIT: Another trick I do some other times is ssh tunnel a db connection to the actual server. Which is something that moving away from shared hosting makes really simple ?
I am also trying to find the time to explore deployment using docker but well, just a plan for when I have some spare time.
Check this thread too for other opininons/services: