The following is just some brainstorming on mysqldump and InnoDB:
Please think about the behavior of mysqldump against an InnoDB table. If there are any dirty pages in the InnoDB Buffer Pool belonging to a table you are dumping, that table's dirty pages has to be flushed out to disk before a
SELECT /* SQL_NO_CACHE */ can be executed against it.
Since you are using Amazon RDS, my gut feeling is that your database is in a multitenant infrastructure (Feel free to correct this statement if I am oversimplifying this). Other databases may be using a shared InnoDB Buffer Pool, a shared metadata file (ibdata1), and a shared tablespace (ibdata1 if innodb_file_per_table is disabled).
There may also be some redundancy of the database going on, which could affect MVCC against the database, even though it is a small dataset.
You may want to increase innodb_lock_wait_timeout (default 50 seconds) in your mysqldump session to see if this has any effect on Amazon RDS (or have Amazon increase this limit). Also, try experimenting with dumping individual tables.
UPDATE 2011-11-14 17:58 EDT
Try executing this within your DB Session (sets it to two minutes):
SET innodb_lock_wait_timeout = 120;