Okay, this seems to work to my liking, and while I think it did affect my battery life, it didn't do so in a meaningful way:
Profile: Low WiFi (1)
Event: Display Unlocked
Enter: WiFi (2)
Task: WiFi Sig (1)
A1: Variable Set [ Name:%wfs To:%WIFII Do Maths:Off Append:Off ]
A2: Variable Split [ Name:%wfs Splitter:Sig: Delete Base:Off ]
A3: Variable Clear [ Name:%wfs1 Pattern Matching:Off ]
A4: Variable Split [ Name:%wfs2 Splitter: Delete Base:On ]
A5: Variable Set [ Name:%WIFISG To:%wfs22 Do Maths:Off Append:Off ]
A6: Array Clear [ Name:%wfs2 ]
Task: WiFi (2)
A1: Write File [ File:wifitest.txt Text:Task start: %DATE %TIME Append:On ]
<Signal check>
A2: Wait [ MS:0 Seconds:15 Minutes:0 Hours:0 Days:0 ]
A3: Goto [ Type:Action Label Number:1 Label:End ] If [ %SCREEN ~ off ]
A4: Goto [ Type:Action Label Number:1 Label:End ] If [ %WIFII !~ *CONNECTION* ]
A5: Perform Task [ Name:WiFi Sig Stop:Off Priority:5 Parameter 1 (%par1): Parameter 2 (%par2): Return Value Variable: ]
A6: If [ %WIFISG < 3 ]
A7: WiFi [ Set:Off ]
A8: Wait [ MS:0 Seconds:0 Minutes:5 Hours:0 Days:0 ]
A9: WiFi [ Set:On ]
A10: End If
A11: Goto [ Type:Action Label Number:1 Label:Signal check ]
<End>
A12: Write File [ File:wifitest.txt Text:Task end: %DATE %TIME Append:On ]