About 4 years ago I came into a business where the security cameras were all older coax models that wired up to capture cards and into a ZoneMinder install. It worked but was cumbersome and I figured it was time to start us getting on IP cameras. We had a new "store" location being built right around the time so I moved everything to IP cameras and ditched ZoneMinder for BlueCherry.
I've never regretted that. BlueCherry is really nice and I see it constantly improving. I don't think I've seen a single new feature introduced in the 4 years I've been using it. Instead they just keep making it better at what it really needs to do. They won't make it limit FPS from a camera. The camera can do that. A timestamp on the image? The camera should do that. Do you want to delete video? Nope. There's no reason for that. The system will eventually cycle it out when the disk is full. They don't work on fluff or things you THINK you need. They work on stability and resource consumption and things that you absolutely need in a video recording system before anything else. I like their approach.
As to cameras I'm not much help. I run about 26 Axis M-1011 or M-1011W (wireless version) cameras one ACTi E33 outdoor bullet camera, and two TRENDNet TV-IP252P dome cameras. I have tried a junk Foscam and HooToo model or two in the past but they were junk and you had to power cycle them randomly to get them back online. A $60 Foscam with PTZ that works MOST of the thing isn't worth anything to me. An Axis M-1011 with no PTZ and smple 640x480 resolution but runs nonstop 365 days a year? That's worth $175 to me. My ACTi E33 has also been reliable for a solid year now and I'm buying more. My TRENDNet TV-IP252P are annoying as hell. They just quit working at random. Their web interface is up, they respond to ICMP pings, but their RTSP feed goes down or borks up bad enough that BlueCherry can't decipher it anymore. I have to powercycle them when I see they're not reading right and I do not like them.
My Axis cameras do go offline sometimes but that's where we power cycle between the grid and generator. We only have a 2 second gap between the two and that seems to catch some cameras in a weird state. Thankfully with them when they go whacky they stop responding to ICMP and HTTP requests to my Nagios install picks up on them being off and I can fix that before it's an issue.