The negotiations can take months, involve many departments, forms (like 20 page security questionairs), custom contract, multiple reviews, strict SLAs. Some companies ask for code escrow (in case your business goes bankrupt). And that's just the business aspect.
On the tech side creating private docker images for their devops team to install seems alright. I've also heard stories where you'd only get a username & password and have to use a special VPN with in-browser terminal and very limited permissions to install the software. If it breaks, and it could be as simple as full harddrive, expect you will be contacted to deal with it. Their operating systems and frameworks (let's say nodejs or java versions) might be out of date. And dealing with issues can involve multiple departments again.
Over the years your contacts at the enterprise company will change without notice. The new contacts won't know any of the contract deals. I've been on a call with 8 people and none of them was aware what the URL to the specific documentation page we created for them was, or the special monitoring solution they asked for (0 pageviews).
Lastly you want to add features to your SaaS but the big client wants different features, or refuse to move to the latest version. You risk having to maintain two versions.
You need to charge a lot for the extra work.
> What kind of pricing model is common in a self-hosted scenario? Is it still a license per user, say $X/year? A one-time payment with ongoing support/maintenance costs?
Setup fee plus base monthly fee. Let's say 10.000 USD plus 2.000 USD per month for x seats. Plus extra for additional seats. You can also try a prototype or discovery fee where you spend time developing the solution, test it on their infrastructure and if they're not happy they still have to pay. Minimum 12 month contract (they might ask for 6 or 12 month termination period).
On AWS Marketplace you can offer an app where the customer pays for hardware and you deploy an image. That pricing model is per hour and can be cancelled anytime.