“So like I said, splines if you want to get really technical, if not take the blocky ring for a clean topology.
Or use the subdiv mod and restrict it to the vertex group that is around the ring part.
Or use a Boolean Modifier with a high poly cylinder which will result in pretty much the same thing as above.”
Those are great suggestions, thank you – I will try those out! I like the idea of restricting subsurf to the groups around the ring, that seems like it would be the easiest to control but I guess I will find out.