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. You can do two things:
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.