I generally see two ways of looping a tilemap:
A. Move the tilemap (or quadrants) to preserve space connexity, so there will be no teleport of the player.
In this case, you have to replicate the tilemap on the 8 directions (up, down, left, right, diagonals). To make this easier, you can slice it in chunks so when the player goes on the left edge, you teleport chunks from the right edge to the left (including objects inside it).
B. Teleport the player like you said and render placeholders of the map when reaching the edges, if needed.
Use cameras to render on a texture, and use that texture to display what's in the world the other side of the "loop portal". So you can see enemies moving the other side, for example :)
Camera problems could be solved by implementing your own camera logic in GDScript so you can handle the teleport. Or, you could have multiple cameras, but use only one as current (the others can render to textures like I said above). They all move the same, but offset by the size of the map. When you need a teleport, switch current camera.