Regarding this:
Here is thing - we are going to add /ca/ and /us/ versions for clients' convenience only. Native currency, shipping options, and direct contact of our US office. We don't want them ranked separately.
What do you really mean with "we don't want them ranked separately"?
Maybe I'm lost in translation, but I don't understand if you that means that you don't want to have the Canadian version ranking for some sort of fear it may cause issue with the organic visibility of the US version.
However, if you simply mean that you want to use the same domain name for both the US and CA versions, while for the Spanish one you will build the site under a different domain name... then, that's totally fine and I don't see many problems with this mixed subfolders/different domain names strategy.
Using the hreflang annotation will be enough in order to avoid "duplicated content issues" between the CA and US versions.
Regarding if using subfolders or subdomains, I would look at how complex is your ecommerce. If it is based on a very big products' database, hence with added complexity... I would probably choose the subdomain option. Remember also that if you client's side did not have a canadian version, multiplying per 2 the quantity of URLs of the site will also mean an extreme dilution of the domain's pagerank, and a bigger dilution as bigger is the number of the URLs you will add.
Instead, if the ecommerce is a small one (and will stay a small one), using subfolders can be a good option.
Regarding the blog, if you will publish the same posts both for the canadian and usa markets, then my suggestion is to have only one blog for both markets (domain.com/blog/)
