Build tokens directly if possible

Build tokens directly from a list of parts instead of a joined address string, avoiding ambiguity as much as possible.