Well, typically when we check for presence of a row in target, the decision is between insert and update, however, thats a business decision.
Till the time you are marking rows as dd_reject, they would be written to a bad file. Avoiding bad file can meqn mul6things here...
One, to not have the file created at all... use a filter to block the rows...you dont need update strategy for that...a simple filter should be good enough.
Second, if you want to process ur rows differently, dont mark them as reject, use a router and process them differently.