You need to "optimize" the world, which will upgrade all chunks to the latest format, which has changed hugely over recent versions, especially in 1.13, which is when they added the option, and the complexity of the changes makes upgrading much slower (otherwise, chunks are upgraded on-the-fly as they are loaded; there is advice to open a world in each update so it can be upgraded incrementally but but this will only update loaded chunks):
That said, this only affects chunk loading from disk; in my experience slow chunk loading on the client is caused by slow rendering (the chunks are loaded but not visible, best seen by being able to stand in or see mobs wandering in them, as in this example; chunk updates (in F3) will also be low), but everybody, even Optifine, just calls it chunk loading even if that isn't technically correct (you could perhaps call it loading chunks into GPU memory).
Otherwise, there have been many reports of performance issues in 1.18 and other recent versions, some of which have been closed as "invalid", much as they closed similar issues dating back to 1.8:
In particular, chunk updates may have been affected by a change in rendering to use triangles instead of quads, meaning that each block face now takes 1.5 times more data and time to render; quads were deprecated in OpenGL 3 so only triangles can be used (the GPU driver internally converts quads into triangles but my own experience shows that this has nearly no impact on performance; even versions as old as 1.6.4 have a flag in the code that can be set to use triangles, which makes chunk updates about 1.5 times slower, which tells me why it was disabled by default. The actual bottleneck seems to be sending the vertex data to the GPU driver, presumably due to a memory transfer):
This difference can be explained by a potential switch from rendering blocks faces with quads to rendering them with triangles (which is the preferred way for maximum driver compatibility), a quad having only 4 vertices while 2 triangles (to represents the quad) having a total of 6 vertices.
Also, if you have a lot of trees around you leaves no longer properly cull faces adjacent to other leaves when set to Fast, completely negating any performance benefit (the only real difference between Fast and Fancy leaves is that Fancy leaves render all faces except those against solid blocks, which significantly increases mesh complexity. I have no idea how bugs like this go unfixed for so long; even more so, it first appeared in 1.8 before being fixed in 1.9 so this is actually the second time it appeared):
Note that these issues are more about lower FPS than chunk update performance (MC-164123 seems to be in part due to a change that priorities chunk updates over FPS and allowing FPS to drop to as low as 30 whereas older versions attempted to maintain the target framerate limit, which is the more reasonable way to handle things as FPS dips are much more noticeable).
I can't imagine why older worlds would have issues even after being converted; there should be no old data left and the only other possibility is that you've built a lot of things, which is the only way I can see an old world performing worse than a new world, no matter how old or large it is (my first world performs exactly the same as a brand-new world, except around my main base, where the hundreds of chests reduce FPS by 3-fold, but still well above the limit set with Vsync so it has no practical impact; chunk rendering itself is not affected, and even the size of the region file my main base is in has not increased in years despite the accumulation of millions of resources, if not that many unique stacks of items (1 chest = 15552 items as mineral blocks). Obviously, this is in 1.6.4 and the world was only updated from 1.5.1 and the only change 1.6 made to data formats was to handle mob health as a float instead of int).
The only other thing I can think of is to run a profiler while the world is running; the game does have a built-in profiler (activated with shift+F3) but I find VisualVM to be more informative (this comes with the Java Development Kit), and compare it to a world that doesn't have the issue. For example, this is how I discovered a significant memory leak (the built-in profiler is probably enough in your case; you'll want to dig down into the sections that show the highest CPU usage while chunks are rendering in):
Also check if some farm has exceeded storage and there are entities (like floating items or undespawning mobs) that are clogging the area, this can be done quickly with F3 seeing the number of entities and turning around. This cannot be used to pinpoint the problem but it can give you a rough idea if there are too many entities.