actually, what overwrite false does, is avoid deploying your contract if is already deployed, even when is changed. What you needed was to “wait” for both contracts to be deployed in your migration in order to have the correct address. just add await before deployer.deploy(…)