You can but most of the time savings are neglibile. If in doubt, turn on performance profiling to see how long each filter takes to execute.
Otherwise you can do something like this, watch out for syntax errors since this is written on my tablet:
<$set name="_list" filter="""
[regexp:title<pattern>] [regexp:text<pattern>] -[all[current]backlinks[]] -[is[current]] -[tag[hide]] -[is[system]]"""><$set name="_listcount" filter="""[enlist<_list>]count[]]""">
<$set name="isFreelink" filter="""[enlist<_list>] +[then[true]else[false]]""">
<$list filter="""[enlist<_list>]""">
</$list>
</$set>
</$set>
</$set>
You can compress the 2nd and 3rd set widget into one vars widget.