I recieved some outside help in understanding the problems underlying the performance issues and fixed them. There was java math functions I was using constantly which was not needed, I was doing a location check for the range twice, and I didn't initially check if the chunk was loaded in the first place. All of this has changed and I would like to know if anyone sees any difference.
I also added WITHER_SKELETON to the hostile list which it wasn't in.