It looks like Bash doesn't allow expressions in a variable indirectness. How about increasing the value ibefore using it in a parenthesis extension, for example:
function f() { i=2; echo "${!i}"; }
Bash:
${! prefix *} ${! prefix @}
, , IFS. "@", , .