AFAIK this is a "common" problem for database clients, or more specifically, the wire format they use.
For example Oracle does not have this problem (can use multiple cursors in parallel), but has other problems (no pure-Go client, abuse of SELECT statement (can return value, which could be modified later, needs the connection remain opened)...).