I think using on DUPLICATE KEY UPDATE is a much better idea than replace into. The REPLACE does an insert possibly followed by a delete. I'd steer clear of that in newer version of MySQL. I wouldn't want to have people deleting rows in my tables unless they really needed to.
We have people write scripts that populate data in our database keep a set of IDs around that they want to delete and if they have new data to insert somewhere along the way we have them update the rows they were going to delete with the new data they were going to insert. We insert and delete data only as we need to. Doing this to 3-4 tables that have high contention cut my slow query log size by half and all the queries that I don't see in that log anymore impact customers so it was a great change.