I realise that various answers (certainly by me) have touched on specific points. So here are some more general ones.
If you personally or someone else at the institution have experience of moodle support, you could do it in house - don't make it more complicated than necessary, and if you want to do something that isn't documented on here a moodle partner could probably help (and do it in a tidy fashion).
The less you change it (apart from using recoginsed plugins), the easier upgrades will be - that was a bit of pain I never really dealt with previously (when we were a moodle house) but the colleague who did all that is now retired.
I did get an updated draft costing last year or so, on having a moodle partner locally (an hour from us) - and I think it was going to be around £20k (based on 17k users) - but that was with them doing all the maintenance, and with some training bundled in.
Personally, I find canvas support hit and miss. Sometimes they give you a great answer (e.g. when I've needed help understanding their APIs), and sometimes they just miss the point completely. Maybe not un-typical.
I also find they are not very good at all, for listening to feature requests. An 'idea' can have 200+ votes, run for years, and still never gets on their radar.
I have complained about this repeatedly, most recently in their last user survey, and finally a senior person who's name was put to this survey actually responded saying he would get the one idea sorting raised (
FYI, it's the issue that you can't use
Sections to control Module visibility - we know moodle has been able to do that for topics using all sorts of requirements, including groups - more frustratingly, they have written code to do this for Assignments, Discussions and Quizzes so it wouldn't be that hard!).