You should replace the long-form arithmetic expression with a dot
product. Otherwise, besides tightening up the priors to be more
informative, I don't see much else to do. You could do some more
vectorization, but it's unlikely to help.
Are your predictors standardized?
You also have a model that's only weakly identified by priors:
because of this term
a[streetlist[n]] + beta[streetlist[n]][1] + ...
You could move to a centered parameterization if you have lots of
data, removing the a[streetlist[n]] term from y_hat sum and
instead putting it into the prior for beta[j].
beta[j] ~ normal(a[j] + u[j] * gamma, 100);
That 100 may be bad news if you don't expect beta to be on that
scale.
- Bob