1. "If it rained last night the match will have been cancelled."
This is an unusual conditional, but it's OK. You'd say it in this scenario: There is a match scheduled for today, but you don't know whether the match is going to take place - this will depend on whether or not it rained last night. There are two connected unknowns here: you don't know whether or not it rained last night, so you don't know whether or not today's match has been cancelled. You know that there are two possibilities: either it rained last night and they cancelled today's match, or it didn't rain last night and they didn't cancel the match. Another way of saying the same thing is 'If it didn't rain last night, they won't have cancelled the match".
2. "If it rained last night the match would have been cancelled."
I don't think this works. I can't see a situation where this would make sense. If you say "the match would have been cancelled", you are imagining a hypothetical (unreal) situation - you'd say this if you knew that the match hadn't been cancelled. However, this hypothesising doesn't fit with the conditional "If it rained", which is something you say if you don't know whether it rained last night or not. So there's a mismatch between the two halves of the sentence - you can't imagine an unreal past scenario if you don't know whether the necessary conditions were met. The mixture of an unknown fact (about whether or not it rained last night) and the imagined non-fact (about the match not having been cancelled) doesn't work - logically, one cannot be dependent on the other.
If you want to use the hypothetical "the match would have been cancelled", you need to have two known facts: you know that it didn't rain last night and you know that the match wasn't cancelled. In this case, you could imagine an unreal past scenario by using a standard third conditional:
"If it had rained last night, the match would have been cancelled".