What I really want to make sure is that at runtime, local symbols (the ones not exported) will have precedence over exported (colliding) symbols of other libs.
You might try first doing an incremental link of the third-party libraries, get a list of all visible symbols with nm, filter out the ones you want to keep visible, and use the --localize-symbols=filename option of objcopy to localize the rest.