Sí PDO
puede obtener dos (o más) conjuntos de filas, siempre que la base de datos que esté utilizando lo admita. Creo que MS SQL Server y MySQL ambos admiten esta funcionalidad, pero al momento de escribir SQLite no lo hace.
La función que desea es PDOStatement::nextRowset
Entonces, en tu ejemplo anterior, podrías hacer algo como;
$sth = $dbh->prepare("SELECT * FROM tb1 WHERE cond1;
SELECT * FROM tb2 WHERE cond2");
$sth->execute();
$rowset1 = $sth->fetchAll();
$sth->nextRowset();
$rowset2 = $sth->fetchAll();
print_r($rowset1);
print_r($rowset2);
Es perfectamente razonable que un único procedimiento almacenado devuelva más de un conjunto de filas.