attributetype ( 2.5.4.6 NAME ( 'c' 'countryName' )
    DESC 'RFC2256: ISO-3166 country 2-letter code'
    SUP name SINGLE-VALUE )
Can't you use the postalAddress attribute?
With your examples, it should be something like:
postalAddress: 123 1st av$Montreal$QC$GGG RT3$CA
postalAddress: 321 42nd st$Montreal$QC$GGG RT1$CA
Address elements are separated by a "$" character, and you can't have empty elements (which means that in your example, you would lose the 2 first empty elements).
Anyway, I don't think multiple values stored in an attribute are given back strictly in the same order.