Is it OK to have multiple TXT records for a single domain containing different SPF entries?

Solution 1:

No. You are right. See RFC 4408, section 4.5.

  1. Records that do not begin with a version section of exactly "v=spf1" are discarded. Note that the version section is terminated either by an SP character or the end of the record. A record with a version section of "v=spf10" does not match and must be discarded.

  2. If any records of type SPF are in the set, then all records of type TXT are discarded.

    After the above steps, there should be exactly one record remaining and evaluation can proceed. If there are two or more records remaining, then check_host() exits immediately with the result of "PermError".

    If no matching records are returned, an SPF client MUST assume that the domain makes no SPF declarations. SPF processing MUST stop and
    return "None".

Solution 2:

This SPF setup is not valid. In case there are multiple records found, the record selection should produce an error as result. See RFC 7208, section 4.5 on selecting records:

If the resultant record set includes more than one record, check_host() produces the "permerror" result.