You can use a source block with a self-defined major mode.
It is easy to define a customized major mode with helper functions like define-derived-mode.
Let us name your new major mode myorg-mode. Then the name of the function executed on C-c C-c is org-babel-execute:myorg.
It is called with two arguments. The first arg is the content of the source block as a ...
Org mode uses the standard Emacs minibuffer completion mechanism for tags: whenever a tag is expected (e.g. at the C-c a m prompt), you can type TAB to get a completion list. You can click on a completion to choose it (or, without a mouse, switch to the completion buffer, navigate to the completion of interest and press RET); or you can narrow down the ...
That is the correct way to do it. Your only other approach is to use something like ivy or helm, which when you type C-c a m will offer you a list of tags that you can use completion on to narrow down.
I was able to generate the tags running gtags --gtagslabel=ctags from the root of the project, using a configuration from ubuntu (zcat /usr/share/doc/global/examples/gtags.conf.gz > ~/.globalrc).