Good questions!
You're right, the Jenkins plugin isn't really designed for customizable use cases, though I think you could create a session/context in the UI, save it, and then use the plugin to import that as a starting point.
Anyway, since Jenkins can run shell/batch commands, it can do anything we can.
One option would be to make sure the Jenkins server/node has python installed, and then you can use one of the premade python scan scripts, and adjust the script itself to your taste (or whatever fits easiest).
Another option is using Jenkins itself as a 'task handler', where you can have Jenkins start up ZAP in one job, while also starting a second job that is nothing but curl requests to the waiting ZAP API. (openurl, scan, report, shutdown, etc)
Hope that helps!