Contract
How can we prevent these external developers from claiming copyright on their contribution in future?
Well, the only way to achieve the quoted is to not just take in any pull requests, but only do so when you get a written, signed contract from that external developer which clearly transfers the copyright to you for those changes (have them include the commit hash in the contract). If you do that, I do not see how there could be any problems whatsoever (that your lawyer couldn't handle). Of course, you will want to make sure that there is a spotless track record of your version of the repository, so you can prove in court that you only added commits that were from either your company or properly contracted external developers.
To be on the save side, you would also formulate your contract so that it is the external developers obligation to prove that he actually holds the copyright (that he transfers to you) in the first place, i.e., they cannot include 3rd party code in their code or will be held liable if they do.
Compartmentalization
What we want to avoid is a situation where a company comes and asks us to re-license our product (for example for the purpose of commercial application) and the external developer/company has to agree to the terms of the re-licensing.
Well, let's focus on what you mean by "a company comes and asks us to re-license our product". Do you have any concrete idea why a company would do that (this is not a rhetorical question).
Maybe you have some part of your library that is excessively clever that you want to keep secret? Trade secret? As soon as you LGPL and distribute the library, you can forget about secrecy anyway, people can fork it and there is nothing whatsoever you can do against it, neither technical nor by law.
Is there some cryptography involved? Forget about keeping that secret by closing the source at a later date - or by closing at all; security by obscurity does not work.
So, if you do come up with a good reason (for yourself - you don't need to tell us), then the easier solution, (easier than the contract variant), would be to put the "special" code in its own library and do not put it in the same repository. Release it separately under some license that is open source but firmly keeps your interests in mind - especially, never accept merge requests by external contributors. Then you can have your "free" parts really free (as in freedom), and just trust the (L)GPL; and you can keep the sensitive parts to yourself.