I do this kind of task using Keyboard Maestro (KM) and AppleScript. It's probably a pinch slower than Mail Act-On and may require an extra key press or two, but both of those are helpful bits of friction for me since my fingers and head can sometimes move too quickly for this type of computer interaction.
This Macro allows me to move Mail messages to the handful of Mailboxes I frequently use. I add or replace Mailboxes as my needs change.
I have a Mail-specific KM Macro Group. In that Macro Group I have a Macro that's triggered by pressing the Hot Key Command-F2 and the Macro uses the KM Action called Execute An AppleScript. The macro looks like this:

AppleScript presents a list of the Mailboxes I've put in the script, I select the desired Mailbox by typing the first letter of its name, then press Return/Enter, and AppleScript moves the selected Message(s).
Here is the script code, which would need adjustments to replace the Mailbox names I've used (e.g., Doctor) and, possibly, the Account name (iCloud).
activate
set theList to {"Vet", "Doctor", "Parents", "Babysitter"}
choose from list theList with prompt "File Message To..." default items {"Vet"}
set listchoice to result as text
end tell
if listchoice is "Vet" then
tell application "Mail"
activate
with timeout of 30 seconds
set theSelectedMessages to selection
repeat with theMessage in theSelectedMessages
set theMailbox to "Vet"
tell application "Mail"
move the theMessage to mailbox theMailbox of account "iCloud"
end tell
end repeat
end timeout
end tell
else if listchoice is "Doctor" then
tell application "Mail"
activate
with timeout of 30 seconds
set theSelectedMessages to selection
repeat with theMessage in theSelectedMessages
set theMailbox to "Doctor"
tell application "Mail"
move the theMessage to mailbox theMailbox of account "iCloud"
end tell
end repeat
end timeout
end tell
else if listchoice is "Parents" then
tell application "Mail"
activate
with timeout of 30 seconds
set theSelectedMessages to selection
repeat with theMessage in theSelectedMessages
set theMailbox to "Parents"
tell application "Mail"
move the theMessage to mailbox theMailbox of account "iCloud"
end tell
end repeat
end timeout
end tell
else if listchoice is "Babysitter" then
tell application "Mail"
activate
with timeout of 30 seconds
set theSelectedMessages to selection
repeat with theMessage in theSelectedMessages
set theMailbox to "Babysitter"
tell application "Mail"
move the theMessage to mailbox theMailbox of account "iCloud"
end tell
end repeat
end timeout
end tell
else
tell application "Mail"
activate
end tell
end if
end
Additional, unrequested information that may be of use:
In the above Macro, the Hot Key used is Command-F2. I want moving a message to a specific Mailbox to be more difficult than opening a specific Mailbox. Which is to say, I have F2 on its own assigned Hot Key to prompt for opening the same Mailboxes that can receive moved messages. The AppleScript for only opening specified Mailboxes looks like this:
activate
set theList to {"Vet", "Doctor", "Parents", "Babysitter"}
choose from list theList with prompt "Open Mailbox..." default items {"Vet"}
set listchoice to result as text
end tell
if listchoice is "Vet" then
tell application "Mail"
activate
set selected mailboxes of message viewer 1 to {mailbox "Vet" of account "iCloud"}
end tell
else if listchoice is "Doctor" then
tell application "Mail"
activate
set selected mailboxes of message viewer 1 to {mailbox "Doctor" of account "iCloud"}
end tell
else if listchoice is "Parents" then
tell application "Mail"
activate
set selected mailboxes of message viewer 1 to {mailbox "Parents" of account "iCloud"}
end tell
else if listchoice is "Babysitter" then
tell application "Mail"
activate
set selected mailboxes of message viewer 1 to {mailbox "Babysitter" of account "iCloud"}
end tell
else
tell application "Mail"
activate
end tell
end if
end