I'm not sure I would agree that a better (but not neccessarily perfect) system needs the full-fat project capabilities anyway, I would guess that, for me, maybe 90% of name strings start with a local variable or type name, so simply parsing the locals, which the ctags parsers (for C/C++) can actually do, but we don't use, and restricting names when locals are found would go a huge way to making it usable again.
We need to first sync universal-ctags with our ctags for this (https://github.com/geany/geany/pull/1160 isn't sufficient to get the new cxx parser working)