Our soil is full of huge rocks. I went with an apron method. I used a roll of galvanized wire and basically sewed it all together -- apron to walls and the overlap at the corners. Mine extends out 2' because I cut a 4' wide piece of fencing in half to make the apron. I put it on top of the ground where there are rocks and dug down a couple of inches where there aren't. I used some big metal staples I'd made from scrap pieces to hold it down while I buried the fencing. I then covered the dirt areas with the dirt I'd dug, the low areas got some extra fill dirt, and the rocky areas are covered with more big rocks. It turned out pretty natural-looking and once the vegetation grows back, you won't be able to tell it's there at all.
There's no keeping snakes out for us. I let the chickens range and leave the coop door open pretty much all day so it seems pointless to try to keep them out. Instead, the coop is on legs and I mounted the nest boxes to the wall so a snake will really have to work for an egg. The chick issue I solved by using a separate brooder box that was snake-proof until they were too large for a snake to eat. In the future, I'd like to let a broody raise a batch so I'll build another mini-coop for that and make that one more secure.