text: Title: Failure in suite setup initiates exit-on-failure even if all tests have skip-on-failure active
  Body: ### Summary
  
  I am running `robot` with `--skiponfailure skip-on-failure` and `--exitonfailure`. Test cases I expect to fail are tagged with `skip-on-failure`. The behavior I desire the following:
  * If a failure happens on any test case not tagged with `skip-on-failure`, I want all remaining tests to be marked as failed due to `--exitonfailure`. (This is working properly.)
  * If a failure happens on a test case tagged with `skip-on-failure`, I want that test case status changed from "FAIL" to "SKIPPED", and I want subsequent test cases to run. (This works properly most of the time, except for the scenario described in this issue.)
  
  I have a suite in which all tests are tagged with `skip-on-failure`. If its suite setup fails, the test cases in the file are correctly marked as skipped. However, subsequent suites do not run, and robot tells me this is because of exit-on-failure mode.
  
  This worked properly in Robot Framework 3.x, when Robot used criticality instead of skipping. Once criticality was removed and skipping was introduced in Robot Framework 4.x, this stopped working properly.
  
  ### Sample code that demonstrates the problem
  
  I have a directory "robot-tests" populated with two children: "test-1.robot" and "test-2.robot":
  
  test-1.robot:
  
  ```
  *** Settings ***
  Test Tags  skip-on-failure
  Suite Setup  This is going to fail
  
  *** Test Cases ***
  Test 1
      [Tags]  skip-on-failure
      Log  Running test 1
  
  *** Keywords ***
  This is going to fail
      Fail  This didn't go well
  ```
  
  test-2.robot:
  
  ```
  *** Test Cases ***
  Test 2
      Log  Running test 2
  ```
  
  When running RF 7.0.1, here is the output. Notice that suite test-2 does not run and is marked as a failure.
  
  ```
  $ robot --version
  Robot Framework 7.0.1 (Python 3.10.12 on linux)
  $ robot --skiponfailure skip-on-failure --exitonfailure robot-tests
  ==============================================================================
  Robot-Tests
  ==============================================================================
  Robot-Tests.Test-1
  ==============================================================================
  Test 1                                                                | SKIP |
  Test failed but skip-on-failure mode was active and it was marked skipped.
  
  Original failure:
  Failure occurred and exit-on-failure mode is in use.
  ------------------------------------------------------------------------------
  Robot-Tests.Test-1                                                    | SKIP |
  Suite setup failed:
  This didn't go well
  
  1 test, 0 passed, 0 failed, 1 skipped
  ==============================================================================
  Robot-Tests.Test-2
  ==============================================================================
  Test 2                                                                | FAIL |
  Failure occurred and exit-on-failure mode is in use.
  ------------------------------------------------------------------------------
  Robot-Tests.Test-2                                                    | FAIL |
  1 test, 0 passed, 1 failed
  ==============================================================================
  Robot-Tests                                                           | FAIL |
  2 tests, 0 passed, 1 failed, 1 skipped
  ==============================================================================
  ```
  
  If I use RF 3.2.2 (with criticality), the behavior is what I want. Notice that test-2 runs and passes. (I removed the unsupported "Test Tags" line prior to running this.)
  
  ```
  $ robot --version
  Robot Framework 3.2.2 (Python 3.10.12 on linux)
  $ robot --noncritical skip-on-failure --exitonfailure robot-tests
  ==============================================================================
  Robot-Tests
  ==============================================================================
  Robot-Tests.Test-1
  ==============================================================================
  Test 1                                                                | FAIL |
  Parent suite setup failed:
  This didn't go well
  ------------------------------------------------------------------------------
  Robot-Tests.Test-1                                                    | PASS |
  Suite setup failed:
  This didn't go well
  
  0 critical tests, 0 passed, 0 failed
  1 test total, 0 passed, 1 failed
  ==============================================================================
  Robot-Tests.Test-2
  ==============================================================================
  Test 2                                                                | PASS |
  ------------------------------------------------------------------------------
  Robot-Tests.Test-2                                                    | PASS |
  1 critical test, 1 passed, 0 failed
  1 test total, 1 passed, 0 failed
  ==============================================================================
  Robot-Tests                                                           | PASS |
  1 critical test, 1 passed, 0 failed
  2 tests total, 1 passed, 1 failed
  ==============================================================================
  ```
  
  If I move the failure to somewhere else inside of test-1, RF 7.x is able to correctly execute the remaining suites. It is only if the failure is in a suite setup or suite teardown that the incorrect behavior is observed.
  
  e.g., changing test-1.robot so that the failure is in the test case setup and not the test suite setup results in a correct running of subsequent tests after the skipped failure:
  
  ```
  *** Test Cases ***
  Test 1
      [Tags]  skip-on-failure
      [Setup]  This is going to fail
      Log  Running test 1
  
  *** Keywords ***
  This is going to fail
      Fail  This didn't go well
  ```
  
  ```
  $ robot --version
  Robot Framework 7.0.1 (Python 3.10.12 on linux)
  $ robot --skiponfailure skip-on-failure --exitonfailure robot-tests
  ==============================================================================
  Robot-Tests
  ==============================================================================
  Robot-Tests.Test-1
  ==============================================================================
  Test 1                                                                | SKIP |
  Test failed but skip-on-failure mode was active and it was marked skipped.
  
  Original failure:
  Setup failed:
  This didn't go well
  ------------------------------------------------------------------------------
  Robot-Tests.Test-1                                                    | SKIP |
  1 test, 0 passed, 0 failed, 1 skipped
  ==============================================================================
  Robot-Tests.Test-2
  ==============================================================================
  Test 2                                                                | PASS |
  ------------------------------------------------------------------------------
  Robot-Tests.Test-2                                                    | PASS |
  1 test, 1 passed, 0 failed
  ==============================================================================
  Robot-Tests                                                           | PASS |
  2 tests, 1 passed, 0 failed, 1 skipped
  ==============================================================================
  ```
  