Now that Smart Contracts can hold funds, can do they count as a online wallet and for example, participate in consensus or earn stake rewards?
What smart contracts control is a normal Algorand account.
As such, this account is by default offline and receives participation rewards.
Recall that participation rewards are received whether the account participates in consensus or not.
However, the kind of transactions that smart contracts can submit is currently limited.
See Transaction Execution Approval Language (TEAL) - Algorand Developer Portal
In particular, it is not possible to send a key registration that is necessary to participate in consensus (and change to online).
(Note that in theory you could participate in consensus by first creating a normal account, sending a key registration, and then rekeying to the smart contract address. However you should absolutely not do that as it would prevent any further key registration. This means that you would not be able to renew your participation key nor stop participating. This is therefore detrimental to the blockchain.)