Assuming the row with the later timestamp should "win", why not eliminate the duplicate as part of your SOURCE
query:
;With Selection as (
select ObjectName,Value,Quality,
ROW_NUMBER() OVER (PARTITION BY ObjectName ORDER BY Timestamp desc) as rn,
MIN(Timestamp) OVER (PARTITION BY ObjectName) as Timestamp
from
Source
)
MERGE Target AS T
USING (select * from Selection where rn=1) AS S
--The rest is unaltered
...
And this is not something unusual about MERGE
- all DML statements act "as if" all rows are processed simultaneously.