A couple of quick points.
A select count() without a where clause is never cheap. Even if you're using an index, on a large dataset, the index may be a considerable portion of the size of the table, and the database has to scan the entire index to get a correct count. It's still more expensive than select id from table where id=1 if id is indexed, because the database never has to actually look in the table, just the index, where count() may access the table. Note that count(id) probably wouldn't hit the table, as it's data is also held in the index.
Two, you guys are still doing it the wrong way. Sorry, but with a race condition like this, you WILL eventually wind up with duplicate data.
Client1: select id from table where id=1; = FALSE
Client2: select id from table where id=1; = FALSE
Client2: Insert into table (id,data) values (1,'looks safe');
Client1: Insert into table (id date) values (1,'looks safe here too');
Trust me, I'm an old timer. just do it the right way, use a unique constrained index, then insert without care, check to see if it went, and if it didn't then retry the whole thing. You can do it silently while the user waits, and you won't get incoherent data into your database.