Thank you for taking the time to wrote on this post! I've been able to make some progress on this, and I've actually implemented a workaround using the Forms SQL table. Since I'm applying data to the Forms Table (User Snapshot ID), this method is deemed unstable for any Forms update could possible break the current look-up rules.
Bryce, while working on this I did have the chance to play with Team Filters and it seems as though you may be able to use them to accomplish your task. If you are using Team Roles the filer can be used to return only the users whom have the specific Role within the Team. One thing that wasn't really explained was that when you use the "Assign to Team based on Variable" you can still use the Filters you've created, you just have to type in the Filter's Name instead of selecting it from the Drop-down. Secondly, to create the filer you have to first select assign to Team, use the drop-down to create and save the filter. Then you can switch to Team based on Variable and type in the newly created Filter Name. Each filter is specific to the Team selected when you first create the Filter, so if there are multiple teams you'll have to create the same filer multiple times. (Using the same Filter Name helps with this.) In your case, you'd need to use the "Helper Methods" to refine your team into specific Users. So create an invisible Single Line on your form and use it as the token to house the Team Name (I used a SQL table to look-up the Current Username to resolve the Team Name). Within the Filter you'll need to use "findMembersByRole('RoleName'):" to return any users whom have the specified role within the Team and you can use the Helper methods to compare this result to other instances such as another team or another role. (This is useful in that you can compare the two lists and return the duplicate users, or non-duplicate users if your teams have a tiered Roles system). If your results at the end of the filter return a single user, then and only then will it directly assign the user task to that submitter, and based on the Team settings the task may or may not be visible to the rest of the team.
Resource Link: https://www.laserfiche.com/support/webhelp/Laserfiche/10/en-US/administration/#../Subsystems/Forms/Content/Inbox-And-Teams/Creating-Team-Filters.htm#tabs-1
In my case, things were a bit different. My teams were based on departments of several different users all of which were participant licenses, and all of which shared the same role as Submitter. So for me, applying a filter would not narrow down my result to only 1 user. What I did to work around this was a bit more complicated. I had to create two workflows. The first workflow is initiated just as a user task was assigned to the submitter (Submission Preview). Since this user task is only assigned to the submitter I used a custom SQL lookup on the [cf_bp_worker_instances] table to locate the current Instance ID (Each time a User task is assigned this table is updated so it's important that this step is done just before the Team Assignment Task. Using the Instance ID obtained from the custom look-up I can then determine the OwnerSnapshot ID (this is the unique ID associated to the user for task assignments.) I write these tokens back into the business process so that I can carry them over into the next Workflow. Now, the submission is assigned to the Team based on a variable (Team Name of Submitter). The second Workflow then uses the previous Instance ID and references it to the Worker Instance ID on the [cf_bp_worker_instnc_to_resume] table (by now the SQL table has already updated its value so the prior Instance ID is now the ref_instance ID). I then write the Snapshot ID into the "owner_snapshot_id" column and I also update the "status" to a static number "5". This pat I'm not exactly sure why the 5 represents, but my best guess is that it tricks LF into thinking that it's a User Task instead of a Team Task. After this though the task is then directly assigned to the User (Submitter) and since I did the adjustment to the SQL table, it maintains it's assignment to the Team. Now in this case, the person who submitted to contract is also the same person who confirms the finalized/signed version, and once they press confirm the task is then placed in the Completed Tasks under the Team Task tab. This is also very useful in that it removes all the clutter of User Task history and provides a clean list view of all the completed contracts without having to disable to individual reporting. If this method is something you think you'd be interested in hearing more about (thought from your submission it seems this might not be the best option since you may be able to accomplish your goal using filters alone) I would be more than happy to provide media and detail my steps further for you.