Assuming "6950", "5830" and "5850" refer to models of the AMD Radeon HD series of graphics cards...
Question 1: Are you using fglrx or are you using radeon? fglrx is the proprietary (closed-source) driver and radeon is the open source graphics driver. In theory both sholuld be able to support the same number of monitors, but in practice fglrx is more likely to result in success -- especially for the HD6950, which is a generation newer than the more-tested HD5000 series which works well on the radeon driver.
Question 2: You aren't trying to put these cards in any kind of crossfire mode, right? You do realize that on Linux there is absolutely no support for multiple graphics cards operating at the same time on the same display server, so any effort to use all 3 cards would require using three separate X servers...
Anyway, regardless of your monitors, you can buy connectors/converters/cables until you're blue in the face and eventually get all of them running. The simplest (but not the least expensive) way would be to plug them all into a MSP DisplayPort 1.2 hub and connect each monitor to the hub via a converter cable from the native input format to DP. But for the one with native HDMI you can just plug it straight into the card. HD6950 will support MSP.