To me the question of source centric-software is much larger than the example presented: "a marriage witnessed by a cousin - I know there is a cousin, but have no way to relate the individual without making some assumptions/guesses." Cases like that, or my favorite, the unidentified survivors (nieces, nephews, grandchildren and great-grandchildren) mentioned in obituaries but not by name, can be handled with "Associated Persons" feature in Family Historian and other pedigree-based programs, or by research notes.
What I want is a program that is focused on the sources, and the evidence in the sources, that does not tempt the user into making a conclusion about the people in the sources in advance of any analysis of the evidence. For instance: in one of my focus places, I have at least three individuals with the same name (the person who married into my husband's family, his father, and his son). I would like to be able to tag strings of data within the transcription of a source, and identify them as names, addresses, occupations, financial information, and so on. Then I could run a query asking the program to show me all the pieces of evidence I have that are associated with this name at this street address, or with this name at this occupation, or so on -- so I can look at the body of evidence as a whole, without assuming that any one piece of it belongs to a particular individual. I want to be able to date-stamp each source so that I can put the data on a timeline. For example: If my family lives at 125 Main Street in Anytown, USA, I want a way to keep track of the fact that I have downloaded the tax map from the Anytown, USA website's GIS system and the property records associated with 125 Main Street, showing that the house which currently exists on the property was built in 1920, so the construction of the current house can be taken into account on that timeline. In cases where cities have re-numbered the streets, I want to be able to assign a place ID that would associate two different street addresses as the same physical place, depending on their time-stamps, so I can bridge the data across the street name changes, or separate street addresses which look the same but are actually not, because they belong to two separate eras.
In a paper-based system, one can make index cards for each source with the desired "talking points" on each one, and then sort them out into groups by hand, so you can see the patterns in the evidence. It is time-consuming to make and maintain such an index, but once you have it, it is easy to pull out the references for all the people who have lived at a particular street address. I haven't found a program yet that will simulate this process on the computer. One thing I'm looking at is the writer's tool Scrivener from Literature and Latte http://www.literatureandlatte.com/ -- since it has features to aid scriptwriters, it already understands locations, characters, and so on. Literature and Latte also has a non-linear note-taking tool in beta called Scapple which may be useful. Before this, I had considered using TiddlyWiki http://tiddlywiki.com/ but I had difficulty getting it to work.
Much of the information I am talking about could be extracted by using queries from existing pedigree-based software -- after the fact, when the researcher has already been forced to make a conclusion and link them to a particular individual. In a source-based system, there might be mini-pedigrees in a source (e.g. a census record), but not all sources explicitly state that information, and pedigree-based programs often force us to assign those relationships when they are not in evidence.
The advantage of template-based software such as Clooz might make it easier to extract equivalent information (e.g. finding all the records which say yes for the question whether or not the person is a veteran of previous wars, on some US Federal Census returns). But a useful source-based
system would help the researcher use those results to drive other research.