You can pass a multiline pattern to grep, to search a line that contains a match for any of the patterns. In other words, a multiline pattern is a disjunction of the patterns on each line.
print_one_pattern_per_line | grep -f - rel.log
Incidentally, you could simplify the print_one_pattern_per_line part. Since you're calling awk anyway, you can do the input line matching inside it. And your awk code can be written in a simpler way, using regular expression replacement to remove everything up to MasterId= (assuming that there's a single occurrence of MasterId= on each line, because your code matches the first instance while my regexp below matches the last instance).
<instruments.log awk '
!/(^|[[:space:]])Swap/ {
gsub(/.*MasterId=/, "");
$0 = substr($0, 1, index($0, "L")-3);
print;
}' | grep -f - rel.log