You can do:
v fvf(%`
f(
moves the the first parenthesis
%
moves to the matching parenthesis
Another way if your are at b
and to follow your idea is:
va(obwob
va(
select (gunc(a, b))
o
switch the cursor in front od the selection
bwb
extend it to func(gunc(a, b))