As I wrote, the version of the build server doesn't matter, as long as it's same or lower than any system where it will be deployed.
I'm sorry but I don't fully understand this sentence: We did update to Prod on Sat and then tried to apply the package built on the lower version on Sunday, but the UAT was already updated.
Remember that you're not applying packages to Prod anymore, you're promoting the full UAT codebase (assuming you're on Self-service topology which pretty much everyone should be by now).
So if the latest update in UAT and Prod is a Microsoft update, you can't anymore promote some older customization deployment from the UAT to Prod. That snapshot would have a D365 version that is lower than your current Prod version.
Could you please share screenshots that we can understand better?
1) Screenshot of your UAT version (Prod you already shared I believe)
2) Screenshot of what you see in LCS when you try to schedule the PROD update?
Thanks!