MultiRootTreelist sitecore field type accepting query and DataSource

If you every worked with TreeList field type you know its limitation. TreeList Source field accepts DataSource or query in format presented in example below:

DataSource=/sitecore/content/home/&IncludeTemplatesForSelection=Temp Name

or

query:self::

I had two problems with that field when I was working. First is the lack of being able to specify multiple routes, because TreeList can have only one root node.
That problem can be solved using Kam Figy solution here.
But it didn't solved my problem because I also needed support for query. I had to display two root nodes where first was in fixed location and second depended on context and I also needed support for inclusion and exclusion criteria for both of my routes. I used Kam's example and changed it slightly.