Zend certified PHP/Magento developer

Magento 2; change shipping method programmatically from admin

I want to change the shipping method programmatically from admin when this button is clicked:
enter image description here

Here is my controller for this button:

class Start extends MagentoSalesControllerAdminhtmlOrder
{
    /**
     * View page action
     *
     * @return MagentoFrameworkControllerResultInterface
     */
    public function execute()
    {
        $objectManager = MagentoFrameworkAppObjectManager::getInstance();
        $order_id = $this->getRequest()->getParam('order_id');
        $order = $objectManager->create('MagentoSalesModelOrder')->load($order_id);
        $this->quoteFactory = $objectManager->create('MagentoQuoteModelQuoteFactory');
        $this->quoteRepository = $objectManager->create('MagentoQuoteApiCartRepositoryInterface');

        $this->_rateResultFactory = $objectManager->create('MagentoShippingModelRateResult');
        $this->_rateMethodFactory = $objectManager->create('MagentoQuoteModelQuoteAddressRateResultMethod');

        $quote = $this->quoteFactory->create()->load($order->getQuoteId());
        $shippingAmount = (float)$order->getShippingAmount();

        $resultRedirect = $this->resultRedirectFactory->create();
        try {

            /** @var MagentoShippingModelRateResult $result */
            $result = $this->_rateResultFactory;

            /** @var MagentoQuoteModelQuoteAddressRateResultMethod $method */
            $method = $this->_rateMethodFactory;

            $method->setCarrier('xyz');
            $method->setCarrierTitle('XYZ Shipping');

            $method->setMethod('xyz');
            $method->setMethodTitle('XYZ Shipping');

            $method->setPrice($shippingAmount);
            $method->setCost($shippingAmount);

            $result->append($method);

            $quote->getShippingAddress()
            ->setShippingMethod('xyz_xyz')
            ->setShippingDescription('Description')
            ->setShippingAmount('20')
            ->save();

            $order->setShippingMethod('xyz_xyz');
            $order->save();

            $this->quoteRepository->save($quote);

            return $resultRedirect->setPath('adminhtml/order_shipment/start', [ 'order_id' => $order->getId() ]);
        } catch (Exception $e) {
            $this->messageManager->addErrorMessage(__($e->getMessage()));
        }
    }
}

The controller is working but the shipping method doesnt change and shows the same shipping method on the create shipment page which was selected during place order.
Any help would be great.