Quote from Captain_Chaos
Did you use the Populate layer? Or check "allow Minecraft to populate the entire terrain"? This will greatly increase the lag when loading new chunks, as Minecraft has to populate them after loading them, as opposed to just loading the blocks. If this is the case, I would look hard at whether you actually need Populate. Most people don't. See this post for more details.
That makes sense, but what worries me is that fact that chunks which I have already explored (and have already been populated) still suffer from slow loading.
I will try removing the population layer.
Edit: After removing the population layers, resource layer, and making sure "allow minecraft to populate chunks" was turned off I am STILL getting the same problem. Despite the fact each chunk would be considered fully populated.
Edit2: I found the problem! It wasn't a population issue or lighting issue as I previously though, it was the massive amounts of overlapping Mycelium I had on the map. Basically every chunk had massive amount of Mycelium blocks unexposed to light, which meant thousands of blocks had to be updated on each pass. (Mycelium turning into dirt).
When I made my world I chose the base material to be Mycelium (which means it ran several blocks deep). It was a simple and costly mistake, which I've seen quite a few people make. (The same thing would happen with grass blocks.)