HSBC, then Credit Cards, then Banks
There's over 10% difference between the best (HSBC) and the worst (Travelex), so doing your homework can earn you several more cervezas! This was a relatively small sample size, so if you want to be absolutely sure, call your own banks and credit cards.

Best: Credit Cards
A) Credit Card Payments
Each of the following includes a 2.5% exchange fee
- MXN$4914 from RBC Infinite Avion Visa
- MXN$4913 from BMO Airmiles Mastercard
- MXN$4813 from Platinum Airmiles Amex
B) Credit Card ATM Withdrawals
Each of the following includes a per-transaction fee and ignores cash advance interest charges
- MXN$4870 from BMO Airmiles Mastercard (C$3.50 fee)
- MXN$4853 from RBC Infinite Avion Visa (C$5.00 fee)
- MXN$4780 from Platinum Airmiles Amex (C$2.75 fee)
Second Best: Canadian Banks
Amounts listed are for in-person currency purchases in Canadian bank branches for customers of the bank. There may be extra charges if you are not a customer of these banks or if you withdraw MXN using an ATM in Mexico.
- MXN$4967 from HSBC
- MXN$4768 and a limit of C$500 if non-customer (4% fee)
- MXN$4689 from TD
- MXN$4673 from Scotiabank
- MXN$4667 from RBC
Worst: Canadian Currency Counters
Actual Value: Current Exchange Rate
Google tells me that C$400 is currently worth MXN$4985.
Note: In my answer, I use specific dollar amounts. These amounts were accurate as of April 16-17, 2015, but obviously exchange rates fluctuate. More important than the specific dollar amounts is the differences between these methods, so even if the numbers are obsolete the answer to the question (the best way to convert these currencies) won't change.