Well, right ... load will need z-lock at some point in time ...
You can commit 1B rows in one go, ie, two-thirds of the data ... so,two-thirds of 3.5m, ie, 2m+ rows on each partition .. is your locklist and maxlocks big enough to support row locks on this many records? if not, then the rows locks will be escalated to table locks that may prevent the other appl working on the target table to fail (unless it is using UR) ..
What will be the state of the source table at the time of this load ??? will it be 100% accessible ?
if so, in your scenario, INSERT ... SELECT will be better as it will be a co-located set based operation rather than thousands of single row operation in case of IMPORT ...
if your source table access will cause issues, then the option left is to export the data (preferably using db2_all) so that the data is stored in the same partition and IMPORTing it back using db2_all ...
Cheers
Sathyaram