Eu descobri uma maneira de fazer isso funcionar, da qual não estou particularmente orgulhoso, mas faz o trabalho. Se você não puder estar em uma transação ao anexar um banco de dados, encerre a transação primeiro.
db.setTransactionSuccessful();
db.endTransaction();
db.execSQL("ATTACH DATABASE ? AS names",new String[]{namesDb});
db.beginTransaction();