Where possible, we should consider using READ ONLY transactions.
Some cases of SERIALIZABLE likely ought to become REPEATABLE READ, if on a Postgres version that supports it. (Actually, on the versions that do NOT have distinct interpretations, e.g. 9.0 and earlier, we can request REPEATABLE READ, and will get SERIALIZABLE instead. Which is OK, as on the elder versions, SERIALIZABLE isn't as heavy-handed as it is in 9.1+.)