I wouldn't say that symlink is a problem. It's already very bad if a symlink lookup affects the performance too much :) Also you may expect that it's cached, in a way that it won't be read from the disk each time, if it's really a "commonly-accessed" directory. But I think, /opt and /usr/local is not so much used on a standard Ubuntu install, /usr/local is used more for your own stuffs you compile from source (this is not the correct definition but usually this is the case), while /opt is used for "optional" softwares. But not so much softwares are installed there normally on Ubuntu, maybe some Google softwares for example, if I want to find an example. Anyway, even if these directories are heavily used, I wouldn't say that a symlink would mean lots of differencies, I would not worry if I were you.
You have another choice as well. Let's say you have a separated filesystem for /opt and /usr/local, for example /dev/sda6. Mount it as /opt. Create a directory inside /opt, let's say it's usrlocal. Then you can use VFS bind to "mount a directory" (not so correct notion technically but never mind ...) this way:
mount --bind /opt/usrlocal /usr/local
Of course you can put this into your /etc/fstab too, so you don't need to do this manually with a line like this in your /etc/fstab:
/opt/usrlocal /usr/local none bind 0 0