Is it something to do with the active (could have) and the passive voice (could have been)?
It is not an active or passive voice issue. They are both active here. Could is a modal verb, expressing possibility. (would and should, as you write later, are also modal verbs, signifying potential and obligation moods, or voices).
Theirs is a difference of tense. Could is the preterite (past, basically) form of can (also, would and should are the preterites of will and shall).
Examples of could have in simple use:
I could have stayed, but it was late and I had to work the next day.
I could have gone (shopping), but I was waiting for the repairman.
I could have 7 tickets in this hat. (This is a special example)
Note the bolded constructions are have + past participle : the present perfect tense. As that links states, "The present perfect is used to indicate a link between the present and the past. The time of the action is before now but not specified...". Note that although the time may be unspecified, it is a definite event.
So returning to these examples, we have a mood of 'possibility' and a tense of 'some time in the past.'
I could have stayed, but it was late and I had to work the next day.
At some point in the past (last night, perhaps), I had the potential to remain at some location (to stay).
I could have gone (shopping), but I was waiting for the repairman.
At some point in the past (maybe yesterday), I had the potential to go shopping.
I could have 7 tickets in this hat. (This is a special example)
This is a special example as I stated: the verb to have here simply means to have, as in to possess, hold, or keep. The tense in this sentence is actually past only because it is not referring to a real event (see conditional / irrealis mood). So it's not even that it is past, but that it exists outside of tense.
OK! So what about could have been? The passive voice is used when the subject is not known or not used for some other reason. You may be mistakenly associated this construction with had been, which is passive (e.g., The door had been shut). Note that could had been is grammatically incorrect.
The have been construction is used with the present perfect continuous tense, denoting a time period (not an event) that occurred before now.
I could have been at home watching TV, but I had to stay late in the office finishing the report.
Normally, I go home and watch TV for some period of time. But this reality was not a possibility since I had to finish work at the office.
I could have been shopping, but I was waiting for the repairman.
It was my plan to go shop for some period of time. Although it was a possibility, I could not realize the possibility since I was at home waiting.
xxxWRONGxxx I could have been 7 tickets in this hat. xxxWRONGxxx
Note here that this in ungrammatical, as this is not an auxiliary verb usage of have. This sentence would only work in a Bill Watterson / Douglas-Adams-esque world (e.g., I could have been 7 tickets in this hat, but my transmogrifier was broken)