You can also pin most packages to testing, but allow packages from unstable/experimental to be installed but pinned at lower priority and also pin security updates from unstable at a higher priority. I think this approach is the best of both worlds.
This seems overly complicated. Nowadays, unstable almost never break (with the exception of files migrating from one package to another without the proper metadata) and I am updating daily. I am curious, are you using testing or unstable?
I am using primarily testing, but some packages from unstable due to security updates or where the package got autoremoved from unstable due to release-critical bugs, which happens quite often. It feels a little more comfortable using testing, knowing that I don't hit any bugs piuparts/etc blocks from entering testing. I think I initially downgraded to testing to avoid dealing with unfinished transitions, which make upgrades a bit more annoying.