The limit only works on the filter it is currently on. So in this case, the filter itself might be invoked 20 times (by the first line), but the limit wouldn’t know anything about that.
Since “removeprefix” also works as a filter “prefix”, I’ve rearranged things so that the limit will apply (test at tiddlywiki.com):