Thanks for the help.
Short version: exported the raw hex transaction from Armory, sent via Bitcoin Core, transaction is confirmed and on the blockchain, so the broadcast failed for other (still unknown) reasons.
For anyone interested, here's how I exported the raw hex transaction. The starting point is that you already have the signed .tx file ready on your online computer. In Armory go to "Offline Transactions" > "Sign and/or Broadcast Transaction" then load the signed .tx file and choose "Copy Raw Tx (Hex)". The appropriate contents are copied to the clipboard (it's a long string of hexadecimal digits). Paste the clipboard contents into a text editor and save it, e.g., "raw_transaction.txt".
Close Armory and Bitcoin Core and start again on the command line (or anyhow just make sure you can access bitcoind on the command line):
bitcoind -daemon
RAW_TX=$(cat raw_transaction.txt)
bitcoin-cli sendrawtransaction $RAW_TX
In my case, the output of the last command was a valid transaction hash for a transaction that is now confirmed on the blockchain.
So my system is producing healthy signed transactions. I would guess the broadcast failure has something to do with how I've got Armory interacting with Bitcoin Core. I will continue to try to troubleshoot the broadcast failure, and report anything I learn. But I'm happy to know I can send through this method. Thanks again.