I hate the block box nature of docker too, and the running even more stuff as root, and several other aspects of docker. You might be interrested in this post I made about how I switched to the docker version, but running in podman instead of docker.
And for splitting your data up to put some on the HDD and some on the NVME, I think this can work. Docker can be weird with links, so rather than using a link, I would suggest defining a different path as a mount point. I think it would look something like this:
volumes:
- /path/to/hdd/seafile-data:/shared
- /path/to/nvme/commits:/shared/seafile/seafile-data/storage/commits
- /path/to/nvme/fs:/shared/seafile/seafile-data/storage/fs