The type can be disambiguated using the little-known import (class|struct|func|protocol|enum) Module.Symbol
syntax.
import struct BTree.OrderedSet
From this point on, OrderedSet unambiguously refers to the one in BTree.
If this would still be ambiguous or sub-optimal in some files, you can create a Swift file to rename imports using typealiases:
// a.swift
import struct BTree.OrderedSet
typealias BTreeOrderedSet<T> = BTree.OrderedSet<T>
// b.swift
let foo = OrderedSet<Int>() // from Foundation
let bar = BTreeOrderedSet<Int>() // from BTree
There was a new syntax discussed for Swift 3, but it fell through.