fast bulk incrementing in MySQL
How about a GROUP BY count on foobar from scratch ???
First, insert any new data into foobar
Then, do a fresh GROUP BY count on foobar into the temp table:
CREATE TABLE foo_amount_new LIKE foo_amount;
INSERT INTO foo_amount_new
SELECT foo_id,COUNT(1)
FROM foobar WHERE bar_id = ... 
GROUP BY foo_id;

Finally, swap the temp table in and drop the old foo_amount
ALTER TABLE foo_amount RENAME foo_amount_zap;
ALTER TABLE foo_amount_new RENAME foo_amount;
DROP TABLE foo_amount_zap;

However, with a table in the billions, this is an uphill battle because you have an index to rebuild. Since the following happens on every INSERT ... ON DUPLICATE KEY:

the amount would have to incremented
the amount would have to shift with in the amount index

Try removing the amount index so as to speed up INSERTs and UPDATEs.
ALTERNATE SUGGESTION
Try out your temp table solution using another method
STEP 01) CREATE TABLE foobar_new LIKE foobar;
STEP 02) Do your bulk INSERTs into foobar_new
STEP 03) CREATE TABLE foo_amount_new LIKE foo_amount;
STEP 04) Perform GROUP BY count on the latest bulk INSERT batch
INSERT INTO foo_amount_new
SELECT foo_id,COUNT(1) FROM foobar_new WHERE bar_id = ... 
GROUP BY foo_id;

STEP 05) Perform a bulk INSERT into foobar from foobar_new
INSERT INTO foobar SELECT * FROM foobar_new;

STEP 06) Perform a bulk UPDATE of foo_amount from foo_amount_new
UPDATE foo_amount A INNER JOIN foo_amount_new B
USING (foo_id) SET A.amount = A.amount + B.amount;

STEP 07) Drop the temp tables
DROP TABLE foobar_new;
DROP TABLE foo_amount_new;