This is correct, and one only needs to consider the impact of large or unlimited length urls on server memory consumption per request to see that a relatively small limit is desirable and even necessary.
Depends. But moving the payload between the body and the query will not solve anything performance wise if you design for it.
A query of that size will likely not benefit from a GET anyway so use a POST.
Sure except POST has its own set of issues - like not being cachable. But SEARCH or QUERY can be cached safely!